如何在当前记录中使用SQL以前的记录计算值?

时间:2015-10-21 00:35:30

标签: sql-server

我正在尝试使用以前的记录计算值来执行当前记录计算。

在下图中,我们编写了一个小查询,用于计算所有日子的收盘。计算出的第1天的期末库存值应该用作第2天的实际库存,类似地,计算的第2天的期末库存值应该用作第3天的实际库存,依此类推,直到日期结束。我们想在单个选择查询中执行此逻辑。我们尝试使用SQL LAG(),BOUNDED Preceding,但没有任何结果是积极的。

enter image description here

1 个答案:

答案 0 :(得分: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