我有一個有兩行的表。這些行使用相同的 ItemID 但不同的 Quantity 和 RowID。
當我執行下面顯示的查詢時,代碼似乎只運行一次:

這是我的查詢:
Update t1
Set t1.Stock = t1.Stock t2.Quantity
From Inventory t1
Join InventoryTrans t2 On t1.ItemID = t2.ItemID
Where t2.RowID In (26221, 26222)
我對庫存的預期結果應該是 3。但由于某種原因是 1
uj5u.com熱心網友回復:
你需要在這里聚合。最有可能的是:
UPDATE I
SET Stock = I.Stock IT.TotalQuantity
FROM dbo.Inventory I
CROSS APPLY (SELECT SUM(Quantity) AS TotalQuantity
FROM dbo.InventoryTrans ca
WHERE ca.ItemID = I.ItemID
AND ca.RowID In (26221, 26222)
GROUP BY ca.ItemID) IT;
注意我也使用有意義的別名。不要使用別名 it's t1, t2, t3, 因為它們沒有意義并且不一致。請參閱要踢的壞習慣:使用表別名,如 (a, b, c) 或 (t1, t2, t3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435489.html
上一篇:INTERVALDAY()TOSECONDS()SQLServer的替代方案
下一篇:根據另一個中的條件選擇列中的值
