私は SQL Server 2008 R2 で作業しています。現在のコストの合計で新しい列を作成するストアド プロシージャを作成しようとしています。
私は持っていますMyTable
:
ID | Costs
----------------
1 | 5
2 | 3
3 | 2
4 | 4
しかし、値を持つ 3 番目の列「CurrentCosts」が必要です。
ID | Costs | CurrentCosts
----------------------------------
1 | 5 | 5
2 | 3 | 8
3 | 2 | 10
4 | 4 | 14
- 「CurrentCosts」の最初の値: 5 + 0 = 5
- 「CurrentCosts」の 2 番目の値は、5 + 3 = 8 です。
- 「CurrentCosts」の 3 番目の値は、8 + 2 = 10 です。
- 「CurrentCosts」の 4 番目の値は、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 コマンドと同じ数のテーブルで、結果が 1 つだけの多数のテーブルを取得しました。すべての結果を含むテーブルを 1 つだけ取得する解決策はありますか。