我在 SQL Server 2008 R2 工作。我正在尝试编写一个存储过程,它将创建具有当前成本总和的新列。
我有MyTable
:
ID | Costs
----------------
1 | 5
2 | 3
3 | 2
4 | 4
但我需要第三列“CurrentCosts”的值:
ID | Costs | CurrentCosts
----------------------------------
1 | 5 | 5
2 | 3 | 8
3 | 2 | 10
4 | 4 | 14
- 'CurrentCosts' 中的第一个值是:5 + 0 = 5
- 'CurrentCosts' 中的第二个值是:5 + 3 = 8
- 'CurrentCosts' 中的第三个值是:8 + 2 = 10
- 'CurrentCosts' 中的第四个值是:10 + 4 = 14
等等。
我试过:
declare @ID INT
declare @current_cost int
declare @running_cost int
select @ID = min( ID ) from MyTable
set @running_cost = 0
set @current_cost = 0
while @ID is not null
begin
select ID, Costs, @running_cost as 'CurrentCosts' from MyTable where ID = @ID
select @ID = min( ID ) from MyTable where ID > @ID
select @current_cost = Costs from MyTable where ID = @ID
set @running_cost += @current_cost
end
它有效,但如果有人有更好的解决方案,我将不胜感激。我得到了许多表,每个表只有一个结果,并且与循环中的 SELECT commanad 一样多。是否有一些解决方案,我将只获得一张包含所有结果的表格。