我正在尝试在单个查询运行中使用以前更新的值来更新记录。这是一个正在运行的总案例,但它是一个 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 server 没有使用以前更新的值。
注意:这将是一个非常大的表,所以我使用前一行运行数量来计算它,并将该值与当前行数量相加,而不是从第一行计算它。
这样做的正确方法是什么?
提前致谢。