SQL分组查询问题:按日期聚合多来源金额(含CAST与CASE)
修正SQL查询:按日期聚合不同来源的金额
原代码存在的问题:
- CASE字段定义之间缺少逗号,触发语法错误
- 未使用聚合函数
SUM()汇总每日金额,仅返回单条记录的数值 - GROUP BY错误包含
Amount和Source,导致分组过细,无法实现按日期聚合 - 未处理无对应来源时的NULL值,无法输出期望的0
修正后的SQL代码:
SELECT CAST(Date AS DATE) AS NewDate, COALESCE(SUM(CASE WHEN Source = 'Source1' THEN Amount END), 0) AS Amount_Source1, COALESCE(SUM(CASE WHEN Source = 'Source2' THEN Amount END), 0) AS Amount_Source2 FROM your_table_name -- 替换为你的实际表名 GROUP BY CAST(Date AS DATE) ORDER BY NewDate;
关键修正说明:
- 修复语法错误:在两个CASE语句之间添加逗号,确保字段定义合法
- 聚合金额求和:用
SUM()包裹CASE表达式,实现每日同一来源的金额累加 - 调整分组逻辑:仅按日期分组,确保每日所有对应来源的记录被聚合计算
- 处理空值显示:
COALESCE()将无对应来源时的NULL结果转换为0,匹配期望输出格式 - 排序结果:添加
ORDER BY NewDate保证输出按日期顺序排列
内容的提问来源于stack exchange,提问作者DearDeer
相关产品推荐
相关产品推荐

