SQL 行转列 原始数据: A,B1 A,B2 A,B3
期望输出格式: A,B1,B2,B3
在 SQL 中,可以使用聚合函数和条件逻辑来实现行转列的操作。具体实现方式可能会因数据库管理系统(DBMS)的不同而有所差异。以下是一些常见的 DBMS 中实现行转列的示例。
假设你的原始数据表名为 original_table
,包含两列 col1
和 col2
。
SELECT col1, GROUP_CONCAT(col2 ORDER BY col2) AS concatenated_cols
FROM original_table
GROUP BY col1;
SELECT col1, STRING_AGG(col2, ',' ORDER BY col2) AS concatenated_cols
FROM original_table
GROUP BY col1;
SELECT col1,
STUFF((SELECT ',' + col2
FROM original_table t2
WHERE t1.col1 = t2.col1
FOR XML PATH('')), 1, 1, '') AS concatenated_cols
FROM original_table t1
GROUP BY col1;
SELECT col1, LISTAGG(col2, ',') WITHIN GROUP (ORDER BY col2) AS concatenated_cols
FROM original_table
GROUP BY col1;
假设你的表 original_table
的数据如下:
col1 | col2 |
---|---|
A | B1 |
A | B2 |
A | B3 |
col1 | concatenated_cols |
---|---|
A | B1,B2,B3 |
这些查询将会把相同 col1
的 col2
值合并成一个逗号分隔的字符串,从而实现行转列的效果。根据你的具体数据库选择相应的查询语句即可。