首页 > 解决方案 > SQL联合但垂直

问题描述

最近开始使用 SQL 中的简单查询

我想知道是否有可能像“联合”一样垂直添加数据

我有两个要组合的选择

month year data1 data2 grouped by month, year
month year data3 data4 grouped by month, year

我要存档的是

month year data1 data2 data3 data4

有没有像 union 这样的功能来存档这个?我试图用“加入”来做到这一点,但失败了

标签: sqljoin

解决方案


听起来 aFULL JOIN可能是你想要的。它包括来自两个操作数组合行的所有行,它们满足ON子句中的表达式。如果另一个操作数中没有匹配的伙伴行,则另一个操作数的列用 填充NULL。这就是为什么coalesce()需要获取年份或月份的原因。

SELECT coalesce (x1.year, x2.year) year,
       coalesce (x1.month, x2.month) month,
       x1.data1,
       x1.data2,
       x2.data3,
       x2.data4
       FROM (<your first grouping query>) x1
            FULL JOIN (<your second grouping query>) x2
                      ON x2.year = x1.year
                         AND x2.month = x1.month;

分别用您的第一个或第二个查询替换<your first grouping query>和。<your second grouping query>


推荐阅读