Oracle累計函數


今天遇到一個客戶的報表需求,在shipment的報表中要查看該shipment中的每個PO的采購數量,當前shipment的出貨數量以及累計的所有出貨數量。

要有累計的出貨數,並且是要有順序的累計出貨數量,例如某個PO為A,出A相關的invoice有三張,如果也是三個shipment出貨,三個invoice中該PO的出貨數量分別為954、827、1305。打開shipment報表,會按invoice的時間(因為先開票才有出貨單shipment)來計算已經累計的出貨數量。

這邊可以從INV_NO來取代INV DATE,因為INV NO后面接的實際上是日期時間,所以用INV_NO來排序是等效的。

數據如下:

 

這里主要用到的是SUM() OVER(ORDER BY)語法,即按INV NO升序去加總QTY

SELECT SQTY FROM (SELECT INV_NO,SUM(qty) over(ORDER BY INV_NO ASC) SQTY from TKINC
WHERE PART_NO='FLTS-T1603330' and color_no='095A' 
AND QTY<>0 and AND SIZE_NAME='FOC') WHERE INV_NO='INV20161214115254982'

結果如下:

 

SELECT SQTY FROM (SELECT INV_NO,SUM(qty) over(ORDER BY INV_NO ASC) SQTY from TKINC
WHERE PART_NO='FLTS-T1603330' and color_no='095A' 
AND QTY<>0 and AND SIZE_NAME='FOC') WHERE INV_NO='INV20161214115254982'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM