【发布时间】:2020-08-05 18:35:06
【问题描述】:
我正在为一个项目编写 SQL,我需要根据一些规则更新 Soh_Wh_A 和 Soh_Wh_B。
这是table_A:
| Code | Warehouse | StockOnHand | Wh_A | Wh_B
----------------------------------------------------
| 001 | A | 10 | NULL | NULL
| 001 | B | 20 | NULL | NULL
| 003 | A | 30 | NULL | NULL
| 033 | B | 40 | NULL | NULL
我想填充列 Wh_A 和 Wh_B。例如,让我们处理第一行,Wh_A 应该具有与 StockOnHand 列相同的值,因为该行属于仓库“A”。使用 update case when 语句很容易做到这一点。
对我来说困难的是用第二行的 StockOnHand 列填充 Wh_B 列。
表格最后应该是这样的。
| Code | Warehouse | StockOnHand | Wh_A | Wh_B
----------------------------------------------------
| 001 | A | 10 | 10 | 20
| 001 | B | 20 | 10 | 20
| 003 | A | 30 | 30 | 40
| 033 | B | 40 | 30 | 40
这是我到目前为止所做的......
update Table_A set
Wh_A = (case
when warehouse = 'A' then stockOnHand
when warehouse = 'B' then ... end)
Wh_B = (case
when warehouse = 'A' then stockOnHand
when warehouse = 'B' then ... end)
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
标签: sql sql-server sql-update common-table-expression window-functions