iT邦幫忙

0

要比對不同公司採購相同有不同採購價格的資料要如何寫

  • 分享至 

  • xImage

案例
廠區 料號 單價 幣別 數量 採購日期
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

大概是這樣
SELECT 廠區,料號,單價,SUM(數量)
FROM TABLE_NAME
GROUP BY 廠區,料號,單價

不過那個「採購日期」有點問題...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
Albert
iT邦高手 1 級 ‧ 2010-04-09 19:42:09
最佳解答

給你參考
很像 你可以改成你要的
你有更難的 更酷的 可以提出來

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

看更多先前的回應...收起先前的回應...
Albert iT邦高手 1 級 ‧ 2010-04-09 19:46:22 檢舉

發票單價的價格"高於","小於","等於" 以前月份"最高價格"
發票單價的價格"高於","小於","等於" 以前月份"最低價格"
TRUNC(xiv.DateInvoiced,'MM') 以前月份 < TRUNC(iv.DateInvoiced,'MM')

Albert iT邦高手 1 級 ‧ 2010-04-10 07:24:28 檢舉

suling提到:
廠區 料號 單價 幣別 數量 採購日期

相同料號單價"高於","小於","等於" 不同廠區"最高單價"
相同料號單價"高於","小於","等於" 不同廠區"最低單價"
xiv.廠區 <> iv.廠區

Skype: Adempiere/Compiere

Albert iT邦高手 1 級 ‧ 2010-04-10 07:33:57 檢舉

我們可以訓練你正確表達你的需求
很多專案經理都要接受正確表達需求

要比對不同公司採購相同有不同採購價格的資料要如何寫
不同公司間比較同料號價格
是跟同料號不同公司間哪一筆比較
是::最低價格哪一筆/最高價格哪一筆/最近價格哪一筆/最先價格哪一筆 ??
是::同年度比較/是同月份比較 ??

Albert iT邦高手 1 級 ‧ 2010-04-11 14:11:35 檢舉

dscwferp 很棒喔 :
SELECT 廠區,料號,單價,SUM(數量) , MAX(採購日期)
FROM TABLE_NAME
GROUP BY 廠區,料號,單價
很簡潔很棒,這是將:
不同廠區+不同料號+不同單價 , 只顯示一次 最後採購日;
但是如果 不同廠區,但同料號同單價,還是會顯示;
因為沒有排除同料號同單價,
因為是聚集指令無法顯示差異的那一筆交易,

2
dscwferp
iT邦高手 1 級 ‧ 2010-04-10 21:27:28

SELECT 廠區,料號,單價,SUM(數量) , MAX(採購日期)
FROM TABLE_NAME
GROUP BY 廠區,料號,單價

我要發表回答

立即登入回答