如何用SQL将同id的多行重复数据合并为单行逗号拼接格式
SQL实现同id多行code值逗号拼接方案
核心实现逻辑是按id字段分组,对同组内的code值执行字符串聚合操作,不同数据库对应的聚合函数略有区别,以下是各主流数据库的实现代码:
MySQL
使用GROUP_CONCAT函数实现:
SELECT id, GROUP_CONCAT(code ORDER BY date DESC SEPARATOR ',') AS code FROM TBL WHERE id = '1527' GROUP BY id;
说明:ORDER BY date DESC用于控制拼接顺序,示例中按日期倒序排列刚好符合你给出的26181,15182的输出顺序,不需要控制顺序可删除该部分
PostgreSQL
使用STRING_AGG函数实现:
SELECT id, STRING_AGG(code::VARCHAR, ',' ORDER BY date DESC) AS code FROM TBL WHERE id = '1527' GROUP BY id;
SQL Server 2017及以上版本
使用STRING_AGG函数实现:
SELECT id, STRING_AGG(code, ',') WITHIN GROUP (ORDER BY date DESC) AS code FROM TBL WHERE id = '1527' GROUP BY id;
Oracle 11gR2及以上版本
使用LISTAGG函数实现:
SELECT id, LISTAGG(code, ',') WITHIN GROUP (ORDER BY date DESC) AS code FROM TBL WHERE id = '1527' GROUP BY id;
内容的提问来源于stack exchange,提问作者shalev sror
相关产品推荐
相关产品推荐

