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

如何使用STRING_AGG将多行按相同字段分组合并为单行?

解决多行合并(指定列逗号拼接)的SQL问题

嘿,你的需求很明确——把除Job列外其他列完全相同的多行数据合并成一行,同时将Job列的值用逗号拼接起来。你的思路方向是对的,但当前的SQL语句有个关键小问题需要修正:

问题出在哪?

你当前的GROUP BY子句里包含了Job列:

SELECT ID, Name, CP, STRING_AGG(Job, ',') FROM myTable GROUP BY ID, Name, CP, Job ORDER BY ID

这会导致每个不同的Job值都会被单独分组,自然无法实现合并效果。我们只需要按那些需要保持唯一的列(也就是除Job外的ID、Name、CP)分组即可。

修正后的SQL语句

SELECT 
  ID, 
  Name, 
  CP, 
  STRING_AGG(Job, ', ') AS Job  -- 给拼接后的列指定别名,结果更清晰
FROM myTable 
GROUP BY ID, Name, CP  -- 去掉GROUP BY里的Job
ORDER BY ID;

如果希望拼接后的Job是有序的(比如按原顺序或字母顺序),可以在STRING_AGG里加上排序规则:

SELECT 
  ID, 
  Name, 
  CP, 
  STRING_AGG(Job, ', ') WITHIN GROUP (ORDER BY Job) AS Job
FROM myTable 
GROUP BY ID, Name, CP 
ORDER BY ID;

验证效果

输入数据:

IDNameCPJob
1Muse13Job1
1Muse13Job2
1Muse13Job3
2Tort51Job4
2Tort51Job5

执行修正后的SQL后,就能得到你期望的结果:

IDNameCPJob
1Muse13Job1, Job2, Job3
2Tort51Job4, Job5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:28:33