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

如何基于另一列调整LISTAGG聚合结果的排序?

解决LISTAGG按关联列排序聚合的问题

你的需求很明确:需要将item列按照对应的Desc列的排序规则进行聚合,而不是按item自身的顺序。

修改后的SQL语句

SELECT LISTAGG(a.item, ', ') WITHIN GROUP (ORDER BY a.Desc ASC) "item",
       LISTAGG(a.Desc, ', ') WITHIN GROUP (ORDER BY a.Desc ASC) "Desc"
FROM tableA a;

为什么这样改?

原来的SQL中,第一个LISTAGG的排序依据是a.item ASC,所以会得到CDJ,CHQ,CSH,EPS的结果。现在我们把第一个LISTAGG的ORDER BY条件改成a.Desc ASC,这样数据库会先按照Desc列的升序顺序排列行,再将对应的item值拼接起来,正好符合你期望的CSH,CHQ,CDJ,EPS的结果。

验证结果

执行上述SQL后,你会得到:

itemDesc
CSH,CHQ,CDJ,EPSCash,Cheque,Cross Department,EPS

完全匹配你想要的输出效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:30