今天遇到一個客戶的報表需求,在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'