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

how to convert varchar columns to comma separated row values

id Name
1  A
2  C
2  D
1  B

需要通过 T-sql 输出

id Name
1  A,B
2  C,D

使用这个

;
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

输出结果

还有一个选项:

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