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

wes*_*pga 5 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
Run Code Online (Sandbox Code Playgroud)

表2:

ItemID  |  val4  |  val5  
ABC        hi       4       
DEF        dude     9
GHI        word3    0
JKL        balls    1
MNO        day      5
Run Code Online (Sandbox Code Playgroud)

我想加入表格,以便它们是这样的:

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
Run Code Online (Sandbox Code Playgroud)

如果一个表没有该项,那么它只是默认为零并且无论如何都要添加该列.这可能在SQL Server中吗?

chu*_*e x 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
Run Code Online (Sandbox Code Playgroud)

完全外连接允许您从两个表中获取数据,即使第一个表中没有数据也是如此.