【发布时间】:2018-05-01 13:46:45
【问题描述】:
我想做一个包含空值的完整外部自连接。例如,如果表 Data 看起来像:
N Name Val
--------------
1 ABC 8
1 DEF 7
2 ABC 9
2 XYZ 6
(其中N 是一个通用索引列,用于在顺序组上启用自联接),我这样做:
SELECT COALESCE(a.n, b.n) as n, COALESCE(a.Name, b.Name) as Name, a.Val as A, b.Val as B
FROM Data a
FULL OUTER JOIN Data b on a.N = b.N - 1 and a.Name = b.Name
我想要:
N Name A B
---------------
1 ABC 8 9
1 DEF 7 NULL
1 XYZ NULL 6
但我得到的更像是交叉连接:
n Name A B
--------------
1 ABC 8 9
1 DEF 7 NULL
2 ABC 9 NULL
2 XYZ 6 NULL
1 ABC NULL 8
1 DEF NULL 7
2 XYZ NULL 6
如何执行此完全外部联接以获得精简的自联接结果?
(注意:实际上列N是一个通用索引,因此需要命名N的值的解决方案并不实用。)
【问题讨论】:
标签: sql-server tsql outer-join self-join