Sql-Server

將兩個表與包含 null 的鍵組合在一起

  • September 12, 2017

我有兩張要加入的桌子

|id |profit|
| 1 | 1234 |
| 2 | 1345 |
| 4 | 1454 |
| 5 | 1254 |

和另一張桌子

| id | x loss | y loss |
| 2  | 34312  | 4354   |
| 3  | 35614  | 4365   |
| 4  | 36615  | 4321   |

並將兩者結合起來,這將是我想要的結果

| id | profit | x loss | y loss |
| 1  | 1234   | Null   | Null   |
| 2  | 1345   | 34312  | 4354   |
| 3  | Null   | 35614  | 4365   |
| 4  | 1454   | 36615  | 4321   |
| 5  | 1254   | Null   | Null   |

我使用的程式碼是

Select x.id, y.id, y.profit, x.xloss, x.yloss
from 
   (select id, SUM(xloss) as xloss, SUM(yloss) AS yloss
    from #SYSLOSSINC
    group by id) x 
 full outer join
   (Select id,sum(profit) as profit
    from #MTDPROFIT
    group by ProductCode) y 
 on x.id = y.id

由於錯誤,我不能只選擇 id: “ambiguous column name ‘id’",這會創建兩個帶有 id 的列

| id   | id   | Profit | xloss | yloss|
| Null | 1    | 1234   | Null  | Null |
| 2    | 2    | 1345   | 34312 | 4354 |
| 3    | Null | Null   | 35614 | 4365 |
| 4    | 4    | 1454   | 36615 | 4321 |
| Null | 5    | 1254   | Null  | Null |

如何將 id 合併到一列中以使 null 不顯示?

這實際上比你想像的要簡單。要僅獲取一個 ID 列,請嘗試:

SELECT ISNULL(x.Id, y.Id) as Id,...

引用自:https://dba.stackexchange.com/questions/185769