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

如何在单条SQL查询中实现A_grade与C_grade结果并排显示?

解决SQL中两个聚合结果并排显示的问题

你遇到的问题是因为UNION是用来合并多行结果的,所以会把两个统计值放到同一列里。要让它们并排显示(作为两列),可以用以下两种方法:

方法一:子查询作为列

直接把两个统计查询作为SELECT的两个列,就能得到并排的结果:

SELECT
    (SELECT SUM(left_qty) FROM bonus_produksi WHERE grade = 'A') AS A_grade,
    (SELECT SUM(left_qty + right_qty) FROM bonus_produksi) AS C_grade;

如果你的grade字段需要模糊匹配(比如值是'A1'、'A2'这类),可以保留grade LIKE 'A%',否则用grade = 'A'更高效。

方法二:条件聚合(推荐)

通过CASE语句在一次表扫描中完成两个统计,性能更优,适合数据量较大的表:

SELECT
    SUM(CASE WHEN grade = 'A' THEN left_qty ELSE 0 END) AS A_grade,
    SUM(left_qty + right_qty) AS C_grade
FROM bonus_produksi;

这里CASE WHEN只统计grade为'A'的left_qty,其他行贡献0;而SUM(left_qty + right_qty)会计算全表的总和。

为什么你的UNION写法不行?

UNION的作用是将多个查询的结果按行拼接,第一个查询的列名会作为最终结果的列名,所以第二个查询的统计值会被放到第一个列里,最终得到两行数据,而不是你需要的两列数据。

内容的提问来源于stack exchange,提问作者Gamara Amirul Haq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:52:16