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

同一查询使用两个LISTAGG返回多行,如何获取单行聚合结果?

解决方法:将同一ID的字段值拼接为单行结果

你的SQL返回多行的核心问题是GROUP BY子句错误:你按rank, title分组,而每条数据的rank和title组合都是唯一的,这会让每一行单独成为一个分组,LISTAGG函数实际上只拼接了单个值,自然返回多条结果。

修改后的SQL如下:

SELECT
    id,
    LISTAGG(rank, ', ') WITHIN GROUP(ORDER BY rank) AS concatenated_rank,
    LISTAGG(title, ', ') WITHIN GROUP(ORDER BY title) AS concatenated_title
FROM
    test
WHERE id = 1
GROUP BY id;

关键修改点:

  • 把GROUP BY rank, title改为GROUP BY id,这样所有id=1的数据会被合并到同一个分组中,LISTAGG才能正确拼接多个值
  • 在SELECT中显式包含id字段,确保结果行包含目标id
  • 给拼接后的字段起别名,让结果更清晰
  • 原SQL中的ORDER BY id可以保留,但因为已经通过WHERE限定了id=1,实际不影响结果

执行这个修改后的语句,就能得到你想要的单行结果:id为1,rank列值为VP, CIO, CFO,title列值为Business, Sales, Marketing。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:20:38