例子:
表格1:
Col1 Col2
----------- -------------
A 1
B 2
D 3
E 4
表2:
Col3 Col4
----------- -------------
A 7
E 9
Z 5
表3:
Col5 Col6
----------- -------------
Y 8
预期产量:
Col1 Col2 Col3 Col4 Col5 Col6
---- ---- ---- ---- ---- ----
A 1 A 7 Y 8
B 2 E 9 NULL NULL
D 3 Z 5 NULL NULL
E 4 NULL NULL NULL NULL
我想要如图所示的输出。
如果有三个表的列分别为Col11,Col2和Col3,Col4和Col5和Col6,则预期输出应为Col1,Col2,Col3,Col4,Col5,Col6,而没有任何连接。它应该只是Table2在Table1的右侧,而Table3应该在Table2的右侧。如果行数不匹配,则Null值将占用空间。我知道两个表的解决方案。但是,需要n个表的SQL查询语法。-提前致谢。
尽管我不太明白为什么要这么做,但我还是尝试回答这个问题,作为我自己学习的一种练习!
感谢@ user2864740提出了使用ROW_NUMBER在每个表之间合成一个公共值的想法!
这是查询:
SELECT
col1,
col2,
col3,
col4,
col5,
col6
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY col1) AS Row,
col1, col2
FROM table1) T1
FULL OUTER JOIN
(SELECT ROW_NUMBER() OVER(ORDER BY col3) AS Row,
col3, col4
FROM table2) T2 ON T1.Row = T2.Row
FULL OUTER JOIN
(SELECT ROW_NUMBER() OVER(ORDER BY col5) AS Row,
col5, col6
FROM table3) T3 ON T1.Row = T3.Row
还有一个SQL Fiddle演示它:http ://sqlfiddle.com/#!3/6c2db/6
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句