包括上一行的值

问题描述 投票:4回答:1

我在这里使用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中逐行处理这个问题?

我简单地研究了滞后,但我不确定它是否能满足我的要求,或者它是最好的方法。

sql sql-server database
1个回答
5
投票

你使用窗口功能在正确的轨道上,但是,Lag()在这里没有多大帮助。好消息是你可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.