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

SQL Server中GROUPING SETS函数分组顺序与预期不符

解决GROUPING SETS结果顺序不符预期的问题

首先明确:GROUPING SETS里的分组顺序不决定结果集的输出顺序,数据库会根据自身查询优化逻辑调整分组执行顺序,所以返回结果和你写的分组列表反向是正常现象。

要得到你预期的「先continent分组,再country,最后city」的结果顺序,必须显式添加ORDER BY,同时借助GROUPING()函数区分不同分组层级——因为GROUPING SETS生成的结果中,未参与分组的列会显示为NULL,这个函数可以判断某列是否属于当前分组:

  • GROUPING(continent)返回0表示continent参与了当前分组,返回1表示未参与
  • 同理,GROUPING(country)、GROUPING(city)也遵循这个规则

修改后的SQL如下:

select continent , country , city , sum(units_sold)
from Sales
group by GROUPING SETS (continent,country,city)
order by 
    GROUPING(continent),  -- 优先显示continent级汇总(值为0)
    GROUPING(country),    -- 其次显示country级汇总,最后是city级
    continent, country, city;

这样就能保证结果按continent→country→city的分组顺序输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:19:50