如何将varchar列转换为逗号分隔的行值

时间:2015-03-06 16:06:10

标签: sql tsql

id Name
1  A
2  C
2  D
1  B

T-sql

所需的输出
id Name
1  A,B
2  C,D

2 个答案:

答案 0 :(得分:0)

使用此

;
WITH    SampleData
          AS ( SELECT   *
               FROM     ( VALUES ( 1, 'A'), ( 2, 'C'), ( 2, 'D'), ( 1, 'B'),
                        ( 1, 'C' ) ) T ( id, name )
             )
    SELECT  DISTINCT
            B.Id ,
            SUBSTRING(( SELECT  ',' + Name
                        FROM    SampleData AS A
                        WHERE   A.Id = B.ID
                      FOR
                        XML PATH('')
                      ), 2, 1000) AS NAME
    FROM    SampleData AS B

输出结果

enter image description here

答案 1 :(得分:0)

这是另一种选择:

SELECT   test.id,  test.Name+','+ Table1_1.Name AS Name
FROM         (SELECT     MIN(Name) AS Name, id
                       FROM          Table1
                       GROUP BY id) AS test RIGHT OUTER JOIN
                      Table1 AS Table1_1 ON test.id = Table1_1.id
                        where test.Name <>Table1_1.Name