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

GROUP BY后分组记录超1条时显示指定值替代LISTAGG结果的实现方法

解决方案

你要的效果用CASE搭配分组计数就能实现,不需要调用LISTAGG,参考通用写法如下:

select 
  Country,
  case 
    when count(distinct City) = 1 then max(City)
    else 'MULTIPLE' 
  end as City,
  sum(Population) as Population
from table1
group by Country

说明

  • 你已经按Country做分组,不需要额外用min(Country)取国家名,直接返回Country字段即可
  • count(distinct City)用于统计当前国家对应的唯一城市数量,如果你的表中同一个国家不会有重复的城市行,也可以简化为count(City)
  • 当分组内城市数为1时,max(City)/min(City)都可以直接取到唯一的城市名称;城市数大于1时直接返回自定义文本即可
  • 上述写法是通用SQL语法,兼容MySQL、Oracle、SQL Server、PostgreSQL等绝大多数主流数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:51:03