如何将相同ID多行数据的对应列值合并为逗号分隔形式
合并相同ID的多行数据列值(逗号分隔)
场景说明
原始数据:同一ID对应多行不同的列值
目标效果:同一ID仅保留一行,对应列值用逗号合并到同一单元格/字段
Excel实现方法
如果使用Excel(2019及以后版本或365),可以用TEXTJOIN函数快速实现:
- 假设ID列是A列,需要合并的列是B列
- 在C2单元格输入公式:
(注:Excel旧版本需按=TEXTJOIN(",", TRUE, IF($A$2:$A$10=A2, $B$2:$B$10, ""))Ctrl+Shift+Enter作为数组公式执行,新版直接回车即可) - 下拉填充公式到所有行,最后删除重复的ID行,仅保留每个ID对应的合并结果
SQL实现方法
不同数据库的合并函数存在差异,以下是主流数据库的写法:
- MySQL/MariaDB:使用
GROUP_CONCAT函数SELECT ID, GROUP_CONCAT(目标列名 SEPARATOR ',') AS 合并列名 FROM 你的表名 GROUP BY ID; - SQL Server 2017+:使用
STRING_AGG函数SELECT ID, STRING_AGG(目标列名, ',') AS 合并列名 FROM 你的表名 GROUP BY ID; - Oracle 11gR2+:使用
LISTAGG函数SELECT ID, LISTAGG(目标列名, ',') WITHIN GROUP (ORDER BY 目标列名) AS 合并列名 FROM 你的表名 GROUP BY ID;
内容的提问来源于stack exchange,提问作者hshs
相关产品推荐
相关产品推荐

