-3
我想使用以前的記錄計算值來執行當前記錄計算。如何在當前記錄中使用SQL先前記錄計算的值?
在下面的圖片中,我們寫了一個小查詢來計算所有日子的收盤價。計算的第1天的閉市值應當用作第2天的實際股票,同樣,第2天的計算的閉市價值應當用作第3天的實際股票,以此類推直到日期結束。我們希望在單個選擇查詢中執行此邏輯。我們嘗試使用SQL LAG(),BOUNDED Preceding,但沒有任何變化是積極的。
我想使用以前的記錄計算值來執行當前記錄計算。如何在當前記錄中使用SQL先前記錄計算的值?
在下面的圖片中,我們寫了一個小查詢來計算所有日子的收盤價。計算的第1天的閉市值應當用作第2天的實際股票,同樣,第2天的計算的閉市價值應當用作第3天的實際股票,以此類推直到日期結束。我們希望在單個選擇查詢中執行此邏輯。我們嘗試使用SQL LAG(),BOUNDED Preceding,但沒有任何變化是積極的。
你可以試試這個:
WITH CTE AS (
SELECT
ROW_NUMBER() OVER(ORDER BY PART_NUMBER, DATE) AS Rownum,
PART_NUMBER, DATE, ACTUALSTOCK, GROSS, BACKLOG, RECEIPT,
SUM(ACTUALSTOCK - (GROSS + BACKLOG) + RECEIPT) OVER (ORDER BY PART_NUMBER, DATE) AS CLOSINGSTOCK
FROM Tbl_PV_Parts_Dtl_MGMT_cur
WHERE PART_NUMBER = '0112107261' AND
DATE BETWEEN '20151021' AND '20151031')
SELECT
PART_NUMBER, DATE,
CASE WHEN Rownum = 1 THEN ACTUALSTOCK ELSE LAG(CLOSINGSTOCK) OVER(ORDER BY Rownum) END,
GROSS, BACKLOG, RECEIPT,
CLOSINGSTOCK
FROM CTE
不客氣! –
你可能會得到一些使用了LAG函數 –
感謝保羅的答覆的。我們嘗試使用SQL LAG函數,但是我無法將它用於計算列。你可以請。更新並分享我的查詢? –
看看遞歸CTE – CustodianOfCode