Sql 使用null连接两个简单表

Sql 使用null连接两个简单表,sql,sql-server,Sql,Sql Server,我正在尝试连接两个如下所示的表: Table A ID X 1 0 1 8 Table B ID Y 1 0 1 24 1 48 Table D ID X Y 1 0 0 1 8 24 1 NULL 48 变成这样的东西: Table A ID X 1 0 1 8 Table B ID Y 1 0 1 24 1 48 Table D ID X Y 1 0

我正在尝试连接两个如下所示的表:

Table A
ID  X
1   0
1   8

Table B
ID  Y
1   0
1   24
1   48
Table D
ID    X     Y
1     0     0
1     8     24
1     NULL  48
变成这样的东西:

Table A
ID  X
1   0
1   8

Table B
ID  Y
1   0
1   24
1   48
Table D
ID    X     Y
1     0     0
1     8     24
1     NULL  48
甚至这样也行:

Table C
ID    X     Y
1     0     NULL
1     8     NULL
1     NULL  0 
1     NULL  24 
1     NULL  48
但这是:

SELECT a.ID, X, Y FROM [Table A] a
LEFT JOIN [Table] b ON a.ID = b.ID
WHERE a.ID = 1
GROUP BY a.ID, X, Y
一直给我这个:

Table X
ID    X     Y
1     0     0
1     0     24
1     0     48
1     8     24 
1     8     48

使用
union all

select id,x,null y from tablea
union all
select id,null,y from tableb
完全联接

select a.id,a.x,b.y 
from tablea a
full join tableb b on a.id = b.id

使用
union all

select id,x,null y from tablea
union all
select id,null,y from tableb
完全联接

select a.id,a.x,b.y 
from tablea a
full join tableb b on a.id = b.id

这将提供具有空值的解决方案:

SELECT ID, X, null as Y FROM "Table A"
UNION ALL
SELECT ID, null X, Y FROM "Table B"

我希望它能有所帮助。

这将提供具有空值的解决方案:

SELECT ID, X, null as Y FROM "Table A"
UNION ALL
SELECT ID, null X, Y FROM "Table B"
我希望这能有所帮助。

ROWNUM和CTEs:

WITH 
ra AS
 (SELECT ROW_NUMBER() OVER (ORDER BY ID,X) AS row,id,x FROM a)
,rb AS
 (SELECT ROW_NUMBER() OVER (ORDER BY ID,Y) as row,id,y FROM b)

SELECT COALESCE(ra.id,rb.id),x,y
FROM ra
INNER JOIN rb
ON ra.id = rb.id AND ra.row = rb.row
ROWNUM和CTEs:

WITH 
ra AS
 (SELECT ROW_NUMBER() OVER (ORDER BY ID,X) AS row,id,x FROM a)
,rb AS
 (SELECT ROW_NUMBER() OVER (ORDER BY ID,Y) as row,id,y FROM b)

SELECT COALESCE(ra.id,rb.id),x,y
FROM ra
INNER JOIN rb
ON ra.id = rb.id AND ra.row = rb.row

如果我自己做,你得到的结果与我得到的结果不匹配:如果我自己做,你得到的结果与我得到的结果不匹配:
UNION ALL
得到了我需要的,除了我没有得到
y
列的列名……有什么想法吗?那
UNION ALL
得到了我需要的,除了我没有得到
y
专栏的名称之外……有什么想法吗?有趣的是,魅力。谢谢。很有意思,你做了魅力。非常感谢。