如何实现Columns to row converting完成单列多行转逗号分隔单行
单列多行转逗号分隔单行实现方法
你这个场景属于字符串聚合操作,和常规多列转多行的列转行逻辑有区别,不同环境下的常用实现如下:
- 支持
STRING_AGG函数的数据库(MySQL 8.0+、SQL Server 2017+、PostgreSQL、SQLite)
直接调用聚合函数即可完成拼接,示例:
注意不同数据库的排序语法略有差异:SQL Server需要加-- 基础写法,需要指定排序规则时可以在函数内补充ORDER BY逻辑 SELECT STRING_AGG(你的列名, ',') AS result FROM Table_A;WITHIN GROUP (ORDER BY 排序列),SQLite直接在语句末尾加ORDER BY子句即可。 - SQL Server 2016及更早版本
没有内置STRING_AGG,可以用FOR XML PATH方案实现:
这里SELECT STUFF( (SELECT ',' + 你的列名 FROM Table_A FOR XML PATH(''), TYPE).value('.','nvarchar(max)'), 1,1,'' ) AS result;STUFF的作用是移除拼接结果开头多余的逗号。 - Oracle数据库
使用内置的LISTAGG函数:SELECT LISTAGG(你的列名, ',') WITHIN GROUP (ORDER BY 你的列名) AS result FROM Table_A; - Python Pandas数据处理场景
如果是在DataFrame中做这个转换,直接用字符串拼接方法:import pandas as pd # 假设df为读取Table_A得到的DataFrame,存储值的列名为col result = df['col'].str.cat(sep=',')
内容的提问来源于stack exchange,提问作者Shaik Firdoshbasha
相关产品推荐
相关产品推荐

