SQL联合但垂直

SQL联合但垂直,sql,join,Sql,Join,最近开始使用SQL中的简单查询 我想知道是否有可能像“union”那样垂直添加数据 我有两个选择,我想结合 month year data1 data2 grouped by month, year month year data3 data4 grouped by month, year 我想归档的是 month year data1 data2 data3 data4 是否有任何功能可以像union一样将其归档?我试图用“join”来实现这一点,但失败得很惨听起来好像完全加入就是你想要的

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

我想知道是否有可能像“union”那样垂直添加数据

我有两个选择,我想结合

month year data1 data2 grouped by month, year
month year data3 data4 grouped by month, year
我想归档的是

month year data1 data2 data3 data4

是否有任何功能可以像union一样将其归档?我试图用“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;
选择联合(x1.year,x2.year)年,
合并(x1.月,x2.月)月,
x1.1,
x1.2,
x2.3,
x2.4
FROM()x1
完全连接()x2
在x2.year=x1.year上
x2.month=x1.month;

分别用第一个或第二个查询替换

请回答您的问题,并根据该数据添加一些和预期的输出。请(您的问题-请勿在评论中发布代码或附加信息)您使用的是哪种产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加一个“
postgresql
oracle
sqlserver
db2
”,…您能告诉我们到目前为止您的查询是什么吗?您的问题很模糊您正在寻找join Operator或是否希望动态增加
SELECT
列表的大小?或者您是否希望增加使用
UNION-ALL
返回的
记录的数量。。。使用(年、月)
则无需使用
coalesce()
,并且连接列也只会在输出中出现一次。这位亲爱的先生工作得很好。经过两个小时的挫折,你真的让我开心@布罗森:如果这个答案解决了你的问题,你应该接受它,这样你的问题就被标记为已解决。