如何将两次SQL查询结果合并为单行展示全部目标列?
实现方法
要把两组数据合并到同一行,根据你的数据场景(每个年份对应唯一一行数据),有两种实用方案可选:
方案1:直接JOIN两个子查询
既然year=25和year=26各自仅返回一行数据,直接将两个查询结果作为表进行连接,就能得到单行的合并结果:
SELECT a.jul, a.aug, a.sep, b.oct, b.nov, b.dec FROM ( SELECT jul, aug, sep FROM table_A WHERE site = 'NY' AND year = 25 ) a CROSS JOIN ( SELECT oct, nov, dec FROM table_A WHERE site = 'NY' AND year = 26 ) b;
方案2:用聚合函数合并UNION后的结果
如果后续数据可能出现多行,但你需要把对应列的非NULL值合并到一行,可以用MAX()(或MIN(),只要非NULL值唯一)函数对UNION后的结果做聚合:
SELECT MAX(jul) AS jul, MAX(aug) AS aug, MAX(sep) AS sep, MAX(oct) AS oct, MAX(nov) AS nov, MAX(dec) AS dec FROM ( SELECT jul, aug, sep, NULL AS oct, NULL AS nov, NULL AS dec FROM table_A WHERE site = 'NY' AND year = 25 UNION ALL SELECT NULL AS jul, NULL AS aug, NULL AS sep, oct, nov, dec FROM table_A WHERE site = 'NY' AND year = 26 ) t;
这里用UNION ALL代替UNION,避免不必要的去重操作,提升查询效率。
最终结果
执行上述任意一种SQL,都会得到你期望的单行输出:
| jul | aug | sep | oct | nov | dec |
|---|---|---|---|---|---|
| 21 | 23 | 22 | 22 | 21 | 20 |
内容的提问来源于stack exchange,提问作者codeislife
相关产品推荐
相关产品推荐

