使用SQL Server 2016,我似乎无法解决这个问题。我有两个表,TableA和TableB:
TableA
Item| Value | ValueID
--------------------------
1 | AAA | 1
1 | BBB | 2
TableB
Item| Value | ValueID
--------------------------
1 | XXX | 1
1 | YYY | 2
1 | ZZZ | 3
What I want to output is:
Item | ValueA | ValueIDA | ValueB | ValueIDB
--------------------------------------------------
1 | AAA | 1 | XXX | 1
1 | BBB | 2 | YYY | 2
1 | [NULL] | [NULL] | ZZZ | 3
我已经尝试了我能想到的每种JOIN组合,但我无法得到这个结果。
提前致谢 -MH
答案 0 :(得分:3)
只需使用left join
或full outer join
即可。在这种情况下:
select b.item, a.value as valuea, a.valueid as valueida,
b.value as valueb, b.valueid as valueidb
from b left join
a
on b.item = a.item and b.valueid = a.valueid;
如果您a
中的行可以保留,即使b
中没有匹配项也要保留,请使用full join
。在这种情况下,您需要在coalesce(a.item, b.item) as item
中使用select
。
答案 1 :(得分:0)
使用RIGHT JOIN
SELECT TableB.ItemID ,
TableA.Value AS ValueA ,
TableA.ValueID AS ValueIDA ,
TableB.Value AS ValueB ,
TableB.ValueID AS ValueIDB
FROM TABLEA
RIGHT JOIN TableB ON TableA.ValueID = TableB.ValueID;