使用GROUP BY分组时无法汇总全部Quantity的SQL问题求助
问题分析与解决方案
你的查询无法得到总汇总25的原因是GROUP BY子句使用了原始字段Data_Code,每条不同的Data_Code会被单独分组,导致两条记录各自返回求和结果,而不是合并为一行计算总和。
从示例数据来看,两条Data_Code生成的MyNewColumn都是FW22(第3位都是2,走ELSE分支,拼接前两位22),因此需要基于生成的MyNewColumn进行分组,才能得到期望的25。
修正方案一:直接匹配SELECT中的计算表达式分组
将GROUP BY子句替换为SELECT里的完整计算逻辑,确保分组依据与生成的MyNewColumn一致:
SELECT CASE SUBSTRING(Data_Code, 3,1) WHEN '1' THEN 'SS' ELSE 'FW' END + SUBSTRING(Data_Code, 1,2) AS [MyNewColumn], SUM(QUANTITY) AS TotalQuantity FROM [MyTable] GROUP BY CASE SUBSTRING(Data_Code, 3,1) WHEN '1' THEN 'SS' ELSE 'FW' END + SUBSTRING(Data_Code, 1,2)
修正方案二:使用CTE/子查询提升可读性
先通过CTE(公共表表达式)生成转换后的MyNewColumn,再基于该列分组求和,代码更易维护:
WITH CTE_Transformed AS ( SELECT CASE SUBSTRING(Data_Code, 3,1) WHEN '1' THEN 'SS' ELSE 'FW' END + SUBSTRING(Data_Code, 1,2) AS [MyNewColumn], QUANTITY FROM [MyTable] ) SELECT MyNewColumn, SUM(QUANTITY) AS TotalQuantity FROM CTE_Transformed GROUP BY MyNewColumn
执行上述任意一种查询,都会返回如下结果:
| MyNewColumn | TotalQuantity |
|---|---|
| FW22 | 25 |
内容的提问来源于stack exchange,提问作者Youssi
相关产品推荐
相关产品推荐

