简书链接:sqlserver把多列变成一列拼接输出x表中的name列数据合并成一个以逗号分隔的字符串
文章字数:72,阅读全文大约需要1分钟
SQL Server 2017及更高版本可用:

1
2
3
sql
SELECT STRING_AGG(name, ',') AS names
FROM x;

较早版本SQL Server(不支持STRING_AGG),采用 FOR XML PATH:

1
2
3
4
5
6
7
SELECT STUFF(
(
SELECT ',' + name
FROM x
FOR XML PATH ('')
), 1, 1, ''
) AS names;

FOR XML PATH (‘’)把每一行的name字段值用逗号连接起来,并作为一个XML片段返回。
STUFF函数用于去掉结果字符串开头的多余逗号。