我在这里使用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中逐行处理这个问题?
我简单地研究了滞后,但我不确定它是否能满足我的要求,或者它是最好的方法。
你使用窗口功能在正确的轨道上,但是,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