我有两个表,其中包含与不同项目相关的值,如下所示:
表1:
ItemID | val1 | val2 | val3 |
ABC 5 1 2.5
DEF 5 5 3.8
GHI 2 1 4.9
MNO 8 2 1.1
PQR 1 8 2.4
表2:
ItemID | val4 | val5
ABC hi 4
DEF dude 9
GHI word3 0
JKL balls 1
MNO day 5
我想加入表格,以便它们是这样的:
ItemID | val1 | val2 | val3 | val4 | val5
ABC 5 1 2.5 hi 4
DEF 5 5 3.8 dude 9
GHI 2 1 4.9 word3 0
JKL 0 0 0 balls 1
MNO 8 2 1.1 day 5
PQR 1 8 2.4 0 0
如果一个表没有该项,那么它只是默认为零并且无论如何都要添加该列。这在SQL Server中是否可行?
答案 0 :(得分:6)
您可以使用COALESCE进行全外连接:
SELECT COALESCE(TABLE1.ITEMID, TABLE2.ITEMID), COALESCE(VAL1, 0), COALESCE(VAL2, 0),
COALESCE(VAL3, 0), COALESCE(VAL4, 0), COALESCE(VAL5, 0)
FROM TABLE1 FULL OUTER JOIN TABLE2
ON TABLE1.ITEMID = TABLE2.ITEMID
完整的外连接允许您从两个表中获取数据,即使第一个表中没有数据也是如此。
答案 1 :(得分:2)
SELECT ISNULL(t1.val1,0), ISNULL(t1.val2,0), ISNULL(t1.val3,0), ISNULL(t2.val4,0), ISNULL(t2.val5,0)
FROM table1 t1
FULL OUTER JOIN tale2 t2 ON t1.itemid= t2.itemid
答案 2 :(得分:1)
select a.itemid, isnull(a.val1, 0), isnull(b.val5, 0)
from a
left join b on a.itemid = b.itemid