我试着求和前几行的值,我想求和前几行的数量"库存"并将结果放到每行中,example
ItemID | Qty | Stockon Hand(本列更新的结果) | 1000 | 1 | 1 |
---|---|---|
1000 | 5 | 6(前一行数量加当前行数量之和) |
1000 | 2 | 8(前一行数量加当前行数量之和) |
1000 | 1 | 9(前一行数量加当前行数量之和) |
下面是一个工作示例。注意,我冒昧地为适当的序列添加了一列…ID,但也可以使用日期列
您可能还注意到我添加了partition by ItemID
Declare @YourTable Table ([ID] int,[ItemID] int,[Qty] int)
Insert Into @YourTable Values
(1,1000,1)
,(2,1000,5)
,(3,1000,2)
,(4,1000,1)
Select *
,OnHand = sum(Qty) over (partition by ItemID order by ID ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
from @YourTable
结果
ID ItemID Qty OnHand
1 1000 1 1
2 1000 5 6
3 1000 2 8
4 1000 1 9