我有一個包含庫存項目的表格,其中相同的項目可以存儲在多個位置(即總數量= 3,1存儲在庫中),以及2個在冰箱裏,0個在廚房裏)。其中每個都有一個入口類型「20」。SQL Server:根據值的選擇更新來自同一個表的值的列
也有條目類型爲「10」的行控制總數。因此,在我的程序中,我看到「可用」爲條目類型「10」,並且可以通過查看條目類型「20」查看每個位置數量。
運行了一些更新之後,我發現即使在「20」行中有項目(在某個項目集上,我有一個包含在「IN」語句只改變那些行)
我期待用某種CASE語句(我認爲)強制「10」條目等於「20」條目的SUM來更新該表。
表看起來是這樣的:
ITEM_ID ENTRYTYPE QTY LOCATION_ID
------------------------------------------------
A01 10 0 ALL-AVAILABLE <--THIS ROW SHOULD SHOW QTY=3
A01 20 1 CABINET
A01 20 2 FRIDGE
A01 20 0 PANTRY
A02 10 0 ALL-AVAILABLE <--THIS ROW SHOULD SHOW QTY=6
A02 20 2 CABINET
A02 20 2 FRIDGE
A02 20 2 PANTRY
我覺得代碼基本上是一樣的東西:
UPDATE Inventory
SET qty = SUM(t2.qty)
FROM Inventory t2
WHERE (ENTRYTYPE = 10 AND qty = 0)
AND ITEM_ID IN (list already generated to be pasted later);
當然,我不能做這樣的工作,無論出於何種原因。所有幫助讚賞!
TIA
這似乎並不喜歡第一個「來自」。獲取RED下劃線 – TrayS
稍微改變了這一點以刪除NULL總和,並在SUM之前放置了COALESCE確定。最終是這樣的: UPDATE T2 SET數量=(選擇COALESCE(SUM(數量),0)從庫存其中ITEM_ID = t2.item_id和ENTRYTYPE = 20) 從庫存T2 其中ENTRYTYPE = 10和QTY = 0 – TrayS