案例
廠區 料號 單價 幣別 數量 採購日期
A TCI-S4 3.4 cny 100 2010/3/4
A TCI-S4 3.4 cny 300 2010/3/22
B TCI-S4 3.9 cny 500 2010/3/12
B TCI-S4 3.9 cny 100 2010/3/02
B TCI-S4 4.3 cny 150 2010/3/29
取的資料結果:相同廠區、料號、幣別、單價取一筆,相同廠區、料號、幣別、單價採購數項相加
廠區 料號 單價 幣別 數量 採購日期
A TCI-S4 3.4 cny 400 2010/3/22
B TCI-S4 3.9 cny 600 2010/3/12
B TCI-S4 4.3 cny 150 2010/3/29
給你參考
很像 你可以改成你要的
你有更難的 更酷的 可以提出來
ERP 技術轉移顧問
Oracle PL/SQL 20年經驗給你參考
SELECT
(SELECT MAX(xvl.PriceActual)||' - '||MIN(xvl.PriceActual)
FROM C_InvoiceLine xvl, C_Invoice xiv, M_Product xpd
WHERE xiv.C_Invoice_ID=xvl.C_Invoice_ID
AND xpd.M_Product_ID=xvl.M_Product_ID
AND TRUNC(xiv.DateInvoiced,'MM')=ADD_MONTHS(TRUNC(SYSDATE,'MM'),-2)
AND xvl.M_Product_ID=vl.M_Product_ID) AS PriceActualX,
pd.Name,pd.Value,iv.DateInvoiced, vl.PriceActual
FROM C_InvoiceLine vl, C_Invoice iv, M_Product pd
WHERE iv.C_Invoice_ID=vl.C_Invoice_ID
AND pd.M_Product_ID=vl.M_Product_ID
AND TRUNC(iv.DateInvoiced,'MM')=ADD_MONTHS(TRUNC(SYSDATE,'MM'),-2)
AND
(
vl.PriceActual <>
(SELECT MAX(xvl.PriceActual)
FROM C_InvoiceLine xvl, C_Invoice xiv, M_Product xpd
WHERE xiv.C_Invoice_ID=xvl.C_Invoice_ID
AND xpd.M_Product_ID=xvl.M_Product_ID
AND TRUNC(xiv.DateInvoiced,'MM')=ADD_MONTHS(TRUNC(SYSDATE,'MM'),-2)
AND xvl.M_Product_ID=vl.M_Product_ID)
OR
vl.PriceActual <>
(SELECT MIN(xvl.PriceActual)
FROM C_InvoiceLine xvl, C_Invoice xiv, M_Product xpd
WHERE xiv.C_Invoice_ID=xvl.C_Invoice_ID
AND xpd.M_Product_ID=xvl.M_Product_ID
AND TRUNC(xiv.DateInvoiced,'MM')=ADD_MONTHS(TRUNC(SYSDATE,'MM'),-2)
AND xvl.M_Product_ID=vl.M_Product_ID)
)
ORDER BY pd.Name,pd.Value,vl.PriceActual
發票單價的價格"高於","小於","等於" 以前月份"最高價格"
發票單價的價格"高於","小於","等於" 以前月份"最低價格"
TRUNC(xiv.DateInvoiced,'MM') 以前月份 < TRUNC(iv.DateInvoiced,'MM')
suling提到:
廠區 料號 單價 幣別 數量 採購日期
相同料號單價"高於","小於","等於" 不同廠區"最高單價"
相同料號單價"高於","小於","等於" 不同廠區"最低單價"
xiv.廠區 <> iv.廠區
Skype: Adempiere/Compiere
我們可以訓練你正確表達你的需求
很多專案經理都要接受正確表達需求
要比對不同公司採購相同有不同採購價格的資料要如何寫
不同公司間比較同料號價格
是跟同料號不同公司間哪一筆比較
是::最低價格哪一筆/最高價格哪一筆/最近價格哪一筆/最先價格哪一筆 ??
是::同年度比較/是同月份比較 ??
dscwferp 很棒喔 :
SELECT 廠區,料號,單價,SUM(數量) , MAX(採購日期)
FROM TABLE_NAME
GROUP BY 廠區,料號,單價
很簡潔很棒,這是將:
不同廠區+不同料號+不同單價 , 只顯示一次 最後採購日;
但是如果 不同廠區,但同料號同單價,還是會顯示;
因為沒有排除同料號同單價,
因為是聚集指令無法顯示差異的那一筆交易,
SELECT 廠區,料號,單價,SUM(數量) , MAX(採購日期)
FROM TABLE_NAME
GROUP BY 廠區,料號,單價