我在这里使用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中逐行处理这个问题?
我简单地研究了滞后,但我不确定它是否符合我的要求,或者它是最好的解决方法。
答案 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