如果没有表,如何连接两个表并使默认值为零

时间:2013-05-24 18:37:01

标签: sql sql-server

我有两个表,其中包含与不同项目相关的值,如下所示:

表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中是否可行?

3 个答案:

答案 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