1回のクエリ実行で以前に更新された値を使用してレコードを更新しようとしています。これは現在の合計ケースですが、SELECTクエリではなくUPDATEクエリです。
テーブルインベントリ(簡略化)
Id Qty RunningQty ItShouldBeUpdatedTo InsteadItsUpdatedTo
1 200 0 200 200
2 300 0 500 300
3 400 0 900 400
4 100 0 1000 100
私の現在のクエリは次のようなものです
UPDATE Inventory
SET RunningQty = ISNULL(A.RunningQuantity, 0) + Quantity
FROM Inventory I
OUTER APPLY
(
-- Take previous row RunningQty
SELECT TOP 1 RunningQty
FROM Inventory
WHERE Id < I.Id
ORDER BY Id DESC
) A
次の行を更新しているようです。SQLサーバーは以前に更新された値を使用していません。
注:これは非常に大きなテーブルになるため、最初の行から計算するのではなく、前の行の実行量を使用して計算し、現在の行の量で値を追加します。
これを行う正しい方法は何ですか?
前もって感謝します。