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