如何将 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
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