将查询结果加入由逗号分隔的单行值

aba*_*hev 8 sql t-sql sql-server

可能重复:
SQL Server:我可以用逗号分隔多行到一列吗?

我有这样的查询:

SELECT name from users
Run Code Online (Sandbox Code Playgroud)

它的结果是许多记录:

1 user1
2 user2
3 user3
Run Code Online (Sandbox Code Playgroud)

我希望将所有这些记录放在一行中用逗号分隔:

user1, user2, user3
Run Code Online (Sandbox Code Playgroud)

如果查询结果为空,则为空行.

如何使用T-SQLUNPIVOT

Dav*_*all 18

您可以使用COALESCE功能来实现此目的:

declare @result varchar(max)

select @result = COALESCE(@result + ', ', '') + name
from users

select @result
Run Code Online (Sandbox Code Playgroud)

这将在sql server 2000及更高版本(也可能是早期版本)中运行.请注意,您在sql server 2000中没有varchar(max).

在更高版本的sql server(2005及更高版本)中,也可以使用XML Path()执行此操作

select name + ','
from users
for xml path('')
Run Code Online (Sandbox Code Playgroud)