如何用SQL将相同artikelnummer的3行合并为1行并拼接kategorie为字符串
需求说明
现有数据表包含artikelnummer、kategorie两个字段,存在同一artikelnummer对应多条kategorie记录的情况,需要导出CSV时将同一编号对应的所有分类值用|拼接为单个字段,每条编号仅保留一行记录。
各数据库实现SQL语句
替换语句中你的表名为实际业务表名即可执行:
- MySQL 8.0+ / MariaDB
SELECT artikelnummer, GROUP_CONCAT(kategorie ORDER BY kategorie SEPARATOR '|') AS kategorie FROM 你的表名 GROUP BY artikelnummer;
- PostgreSQL
SELECT artikelnummer, STRING_AGG(kategorie::TEXT, '|' ORDER BY kategorie) AS kategorie FROM 你的表名 GROUP BY artikelnummer;
- SQL Server
SELECT artikelnummer, STRING_AGG(kategorie, '|') WITHIN GROUP (ORDER BY kategorie) AS kategorie FROM 你的表名 GROUP BY artikelnummer;
- Oracle
SELECT artikelnummer, LISTAGG(kategorie, '|') WITHIN GROUP (ORDER BY kategorie) AS kategorie FROM 你的表名 GROUP BY artikelnummer;
CSV导出说明
执行上述查询获得结果集后,直接用数据库客户端的导出功能将结果保存为CSV格式即可,最终导出文件中同一artikelnummer仅展示一行,kategorie字段会自动呈现为264|460|331的拼接格式。
内容的提问来源于stack exchange,提问作者Grimclaw Draven
相关产品推荐
相关产品推荐

