假設,我有兩張 HUGHE 表:一張是商品 ID,例如 10、20 等,另一張是商品代碼。目標是將所有專案 id 替換為其相應的專案代碼。
表格1:
SELECT [customer]
,[item1]
,[item2]
,[item3]
,[item4]
FROM [StoreData].[dbo].[Customer]
| 顧客 | 專案1 | 專案2 | 第 3 項 | 第 4 項 |
|---|---|---|---|---|
| 1 | 10 | 空值 | 20 | 30 |
| 2 | 空值 | 空值 | 45 | 35 |
| 3 | 12 | 空值 | 22 | 67 |
| 4 | 57 | 22 | 20 | 空值 |
表 2:
SELECT [item]
,[code]
FROM [StoreData].[dbo].[ItemCode]
| 物品 | 代碼 |
|---|---|
| 10 | 1000 |
| 20 | 1000 |
| 30 | 1000 |
| 12 | 1500 |
| 22 | 1500 |
| 33 | 1500 |
| 35 | 2000 |
| 45 | 2000 |
| 57 | 2300 |
| 67 | 2300 |
決賽桌需要
| 顧客 | 專案1 | 專案2 | 第 3 項 | 第 4 項 |
|---|---|---|---|---|
| 1 | 1000 | 空值 | 1000 | 1000 |
| 2 | 空值 | 空值 | 2000 | 2000 |
| 3 | 1500 | 空值 | 1500 | 2300 |
| 4 | 2300 | 1500 | 10000 | 空值 |
有許多專案(> 1M 行)。因此,無法手動重新標記這些內容。我們怎樣才能自動完成呢?非常感謝
uj5u.com熱心網友回復:
這就是JOINs 存在的原因:
SELECT
c.[customer],
ic1.code Item1,
ic2.code Item2,
ic3.code Item3,
ic4.code Item4
FROM [StoreData].[dbo].[Customer] c
LEFT JOIN [StoreData].[dbo].[ItemCode] ic1
ON c.item1 = ic1.item
LEFT JOIN [StoreData].[dbo].[ItemCode] ic2
ON c.item2 = ic2.item
LEFT JOIN [StoreData].[dbo].[ItemCode] ic3
ON c.item3 = ic3.item
LEFT JOIN [StoreData].[dbo].[ItemCode] ic4
ON c.item4 = ic4.item
;
uj5u.com熱心網友回復:
您可以INNER JOIN在items
SELECT t1.customer,
MAX(CASE WHEN t1.item1 = t2.item THEN t2.code END) item1,
MAX(CASE WHEN t1.item2 = t2.item THEN t2.code END) item2,
MAX(CASE WHEN t1.item3 = t2.item THEN t2.code END) item3 ,
MAX(CASE WHEN t1.item4 = t2.item THEN t2.code END) item4
FROM [Customer] t1
INNER JOIN [ItemCode] t2
ON t2.item IN (t1.item1,t1.item2,t1.item3,t1.item4)
GROUP BY t1.customer
SQLFIDDLE
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431243.html
