我有多个外连接
SELECT A.column2
, B.column2
, C.column2
FROM
(
(SELECT month, column2 FROM table1) A
FULL OUTER JOIN
(SELECT month, column2 FROM table2) B on A.month= B.month
FULL OUTER JOIN
(SELECT month, column2 FROM table3) C on A.month= C.month
)
现在最后一个连接有问题,当 A 的月份大于 B 时,它会重复,但如果 B 的月份比 A 多,我们在 C 中与 A 的月份进行 OUTER JOIN,现在会重复,所以我猜有一个 FULL两个表内的 OUTER JOIN 可能会解决问题?有深入的链接吗?
示例数据(不正确)
╔════════════╦═════════╦═════════════╗
║ Revenue ║ Budget ║ ActualMonth ║
╠════════════╬═════════╬═════════════╣
║ 6.9172 ║ 3.5046 ║ Jan ║
║ 7.3273 ║ 3.7383 ║ Feb ║
║ 7.3273 ║ 3.9719 ║ Mar ║
║ 7.2726 ║ 4.2056 ║ Apr ║
║ 7.2595 ║ 6.7757 ║ May ║
║ 7.2726 ║ 6.7757 ║ Jun ║
║ 0.41 ║ 0.00 ║ Jul ║
║ 0.41 ║ 0.00 ║ Aug ║
║ 0.41 ║ 0.00 ║ Sep ║
║ 0.41 ║ 0.00 ║ Oct ║
║ 7.4696 ║ 0.00 ║ Nov ║
║ 7.4696 ║ 0.00 ║ Dec ║
║ 0.00 ║ 9.3457 ║ Sep ║
║ 0.00 ║ 16.3551 ║ Dec ║
║ 0.00 ║ 6.3084 ║ Jul ║
║ 0.00 ║ 14.0186 ║ Oct ║
║ 0.00 ║ 16.3551 ║ Nov ║
║ 0.00 ║ 6.1915 ║ Aug ║
╚════════════╩═════════╩═════════════╝
正确数据
╔════════════╦═════════╦═════════════╗
║ Revenue ║ Budget ║ ActualMonth ║
╠════════════╬═════════╬═════════════╣
║ 6.9172 ║ 3.5046 ║ Jan ║
║ 7.3273 ║ 3.7383 ║ Feb ║
║ 7.3273 ║ 3.9719 ║ Mar ║
║ 7.2726 ║ 4.2056 ║ Apr ║
║ 7.2595 ║ 6.7757 ║ May ║
║ 7.2726 ║ 6.7757 ║ Jun ║
║ 0.41 ║ 6.3084 ║ Jul ║
║ 0.41 ║ 6.1915 ║ Aug ║
║ 0.41 ║ 9.3457 ║ Sep ║
║ 0.41 ║ 14.0186 ║ Oct ║
║ 7.4696 ║ 16.3551 ║ Nov ║
║ 7.4696 ║ 16.3551 ║ Dec ║
╚════════════╩═════════╩═════════════╝
最佳答案
SELECT A.column2
, B.column2
, C.column2
FROM
(
(SELECT month, column2 FROM table1) A
FULL OUTER JOIN
(SELECT month, column2 FROM table2) B on A.month= B.month
FULL OUTER JOIN
(SELECT month, column2 FROM table3) C on ISNULL(A.month, B.month) = C.month
)
关于sql - 多个表上的多个 FULL OUTER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167902/