将列值转换为分组的逗号分隔字符串

时间:2011-09-06 17:32:01

标签: sql-server-2008

我正在使用SQL Server 2008.我有一个如下表:

ID  Name 
1   a
1   b
2   c
3   d

我想要输出如下:

ID  Name
1   a,b
2   c
3   d

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT
    ID, 
    Names = REPLACE(STUFF( 
        ( 
            SELECT ',' + Name AS [data()] 
            FROM dbo.Table AS x 
            WHERE x.ID = t.ID 
            ORDER BY Name 
            FOR XML PATH ('') 
        ), 1, 1, ''), ' ,', ',')
FROM dbo.Table AS t 
ORDER BY ID;

答案 1 :(得分:1)

select id, (select itbl.name+','
            from tblname itbl
            where itbl.id=tbl.id
            for xml path('')) name
from tblname tbl
group by id