如何修改SQL Server查询以新增col2列数值合计的汇总行
SQL Server查询新增汇总行解决方案
你可以通过以下两种方式修改原有查询实现需求:
方法1:使用UNION ALL拼接汇总行
逻辑直观易理解,无需修改原有分组逻辑,适配所有SQL Server版本:
SELECT col1, COUNT(*) AS col2, CASE WHEN col1 = 'aaa' THEN 'xxx' WHEN col1 = 'bbb' THEN 'yyy' WHEN col1 = 'ccc' THEN 'zzz' ELSE 'ttt' END AS col3 FROM table1 GROUP BY col1 UNION ALL -- 拼接汇总统计行 SELECT 'sum' AS col1, COUNT(*) AS col2, 'sum of values in col2' AS col3 FROM table1
方法2:使用GROUP BY ROLLUP实现(效率更高)
利用SQL Server原生ROLLUP聚合特性,仅需一次表扫描即可生成结果,性能更优:
SELECT ISNULL(col1, 'sum') AS col1, COUNT(*) AS col2, CASE -- 判断当前行是否为汇总行,优先返回汇总提示 WHEN GROUPING_ID(col1) = 1 THEN 'sum of values in col2' WHEN col1 = 'aaa' THEN 'xxx' WHEN col1 = 'bbb' THEN 'yyy' WHEN col1 = 'ccc' THEN 'zzz' ELSE 'ttt' END AS col3 FROM table1 GROUP BY ROLLUP(col1)
说明:GROUP BY ROLLUP(col1)会自动在原有分组结果后新增汇总行,该行的col1值默认为NULL,通过ISNULL和GROUPING_ID函数即可替换为期望的汇总标识文本。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

