2015-10-21 85 views
-3

我想使用以前的記錄計算值來執行當前記錄計算。如何在當前記錄中使用SQL先前記錄計算的值?

在下面的圖片中,我們寫了一個小查詢來計算所有日子的收盤價。計算的第1天的閉市值應當用作第2天的實際股票,同樣,第2天的計算的閉市價值應當用作第3天的實際股票,以此類推直到日期結束。我們希望在單個選擇查詢中執行此邏輯。我們嘗試使用SQL LAG(),BOUNDED Preceding,但沒有任何變化是積極的。

enter image description here

+0

你可能會得到一些使用了LAG函數 –

+0

感謝保羅的答覆的。我們嘗試使用SQL LAG函數,但是我無法將它用於計算列。你可以請。更新並分享我的查詢? –

+1

看看遞歸CTE – CustodianOfCode

回答

0

你可以試試這個:

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 
+0

不客氣! –