如何在单条SQL查询语句中使用3个GROUP BY?附需求示例
单表GROUP BY查询实现三列条件求和
问题背景
需要在单表的GROUP BY查询中,在SELECT语句里返回三个不同条件的求和列。
表结构(根据需求还原)
假设表包含核心字段:
分组字段(如部门、类别等,用于GROUP BY分组)数值字段(需要求和的金额、数量等数值型字段)类型标识(用于区分不同求和条件的字段,如类型1、2、3)
期望结果
按分组字段聚合后,每行返回:
- 分组字段的值
- 类型1对应的数值总和
- 类型2对应的数值总和
- 类型3对应的数值总和
实现SQL语句
使用条件聚合(CASE WHEN搭配SUM函数)即可实现,示例代码如下:
SELECT 分组字段, SUM(CASE WHEN 类型标识 = '类型1' THEN 数值字段 ELSE 0 END) AS 求和列1, SUM(CASE WHEN 类型标识 = '类型2' THEN 数值字段 ELSE 0 END) AS 求和列2, SUM(CASE WHEN 类型标识 = '类型3' THEN 数值字段 ELSE 0 END) AS 求和列3 FROM 你的表名 GROUP BY 分组字段;
关键说明
CASE WHEN会筛选出符合指定类型的记录,仅对满足条件的数值字段求和,不满足条件的返回0,避免影响总和计算GROUP BY 分组字段确保数据按指定维度完成分组汇总- 请根据实际表结构,替换示例中的
分组字段、类型标识、数值字段、你的表名以及具体类型值(如'类型1')
内容的提问来源于stack exchange,提问作者wai yan kyaw
相关产品推荐
相关产品推荐

