You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MySQL UNION SELECT的两行统计结果转换为列展示?

解决方案:用条件聚合实现列展示

可以通过条件聚合函数(结合SUM()和CASE表达式)将两个统计结果放在同一行的不同列中,避免使用UNION产生多行结果。

修改后的SQL查询

SELECT
  SUM(a.smd24_18v_act) AS total_all_period,
  SUM(CASE WHEN MONTH(a.smd24_date) = 1 THEN a.smd24_18v_act ELSE 0 END) AS total_january
FROM smd24_log_monthly as a
WHERE 
  a.smd24_date BETWEEN '2017-01-01' AND CURRENT_DATE
  AND YEAR(a.smd24_date) != YEAR(CURRENT_DATE);

代码说明

  • SUM(a.smd24_18v_act):计算2017年至当前年份前一年的所有数据总和,对应原查询的第一个统计项。
  • SUM(CASE WHEN MONTH(a.smd24_date) = 1 THEN a.smd24_18v_act ELSE 0 END):仅对时间段内1月的数据求和,非1月的数据以0计入,最终得到1月的总计值,对应原查询的第二个统计项。
  • 统一的WHERE子句:两个统计共享相同的时间范围过滤条件,无需重复编写,提升查询效率。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:45:00