sql表从一组行到一行

时间:2013-07-01 15:42:39

标签: sql sql-server set sql-server-group-concat

我的问题很简单:

我一直试图从

转换表格的输出
1 a
1 b     into    1 a b c
1 c

2 d
2 e     into    2 d e f
2 f

该表将始终包含3行,这些行将成为一个包含4列的表格。

我尝试循环并卡住了......

编辑:适用于SQL_SERVER

2 个答案:

答案 0 :(得分:0)

对于MY_SQL

SELECT A, group_concat(B SEPARATOR " ") as BResult
FROM TABLE
GROUP BY A
  • 对于ORACLE,如果B的顺序很重要,请查看List_Agg或WM_CONCAT或按顺序查看。
  • 对于SQL SERVER,请查看XML Path。

但是,如果您只是尝试将行转换为列...

如果你的dbms支持它,你可以使用cte。 你可以看看枢轴。如果您的rdbms支持它。

答案 1 :(得分:0)

您可以使用FOR XML PATH构造来模拟MySQL的GROUP_CONCAT,如下所示:

select 
    ID, 
    stuff((select ' ' + Value 
           from YourTable t2 where t1.ID = t2.ID 
           for xml path('')),
          1,2,'') [Values]
from YourTable t1
group by ID

关于该主题的其他答案: