0
我試圖在單個查詢運行中使用先前更新的值更新記錄。這是一個正在運行的總案例,但它是一個UPDATE查詢而不是SELECT查詢。使用先前更新的值更新
表庫存(簡體)
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服務器沒有使用以前更新值。
注意:這將是一個非常大的表,所以我使用上一行的運行數量計算它,並將該值與當前行數量相加,而不是從第一行計算它。
這樣做的正確方法是什麼?
在此先感謝。