包括上一行的值

时间:2018-03-01 21:59:25

标签: sql sql-server database

我在这里使用SQL Server。我有一个库存表,其中只有1月有一个开始数量。每一行都有一个月份的更改数量。

所以..

Item | Month | Beg | PerChg
---------------------------
001    1       5      5
001    2       0     -1
001    3       0      4

因此,在上述情况下,1月将是10月,2月9日和3月13日,依此类推......

是否可以在SQL中逐行处理这个问题?

我简单地研究了滞后,但我不确定它是否符合我的要求,或者它是最好的解决方法。

1 个答案:

答案 0 :(得分:5)

您使用窗口功能走在正确的轨道上,但是,滞后()对此没什么帮助。好消息是你可以使用 sum()而不是

示例

Declare @YourTable Table ([Item] varchar(50),[Month] int,[Beg] int,[PerChg] int)
Insert Into @YourTable Values 
 ('001',1,5,5)
,('001',2,0,-1)
,('001',3,0,4)

Select * 
      ,RunningTotal = sum(Beg+PerChg) over (Partition By Item Order by Month)
 From @YourTable

<强>返回

Item    Month   Beg     PerChg  RunningTotal
001     1       5       5       10
001     2       0       -1      9
001     3       0       4       13