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

SQL中为查询结果的Quantity列添加汇总行的正确语法咨询

解决方案

你的ROLLUP语法有误,下面提供两种可行的实现方式:

方法1:使用ROLLUP生成汇总行(推荐)

ROLLUP需要配合GROUP BY和聚合函数使用,正确写法是将ROLLUP放在GROUP BY后,同时通过GROUPING()函数识别汇总行:

SELECT 
    CASE WHEN GROUPING(Item) = 1 THEN '总计' ELSE Item END AS Item,
    SUM(Quantity) AS Quantity
FROM aTable
WHERE Item LIKE '%ABC%'
GROUP BY ROLLUP(Item)
  • GROUPING(Item)返回1时,表示当前行是ROLLUP生成的总计行,我们可以将其Item列显示为'总计';返回0则是普通分组行。
  • 这个方法适用于支持SQL:2008标准的数据库(如SQL Server、MySQL 8.0+、PostgreSQL等)。

方法2:使用UNION ALL拼接明细与总计

如果数据库不支持ROLLUP,或者你更倾向于直观的拼接方式,可以分别查询明细和总计,再用UNION ALL合并:

-- 明细数据
SELECT Item, Quantity
FROM aTable
WHERE Item LIKE '%ABC%'
UNION ALL
-- 总计行
SELECT '总计' AS Item, SUM(Quantity) AS Quantity
FROM aTable
WHERE Item LIKE '%ABC%'

注意:两个查询的列数、数据类型必须完全匹配。如果Item是数值类型,可将'总计'替换为NULL或其他兼容值。

废弃语法(不推荐)

SQL Server中曾支持COMPUTE语法生成汇总,但该语法已被废弃,不建议使用:

SELECT Item, Quantity
FROM aTable
WHERE Item LIKE '%ABC%'
COMPUTE SUM(Quantity)

内容的提问来源于stack exchange,提问作者WantaghMomma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:05:07