可能重复:
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?
我有这样的查询:
SELECT name from users
,结果是许多记录:
1 user1
2 user2
3 user3
我希望将所有这些记录放在一行中用逗号分隔:
user1, user2, user3
如果查询结果为空,则为空行。
如何使用T-SQL
获取此内容? UNPIVOT
?
答案 0 :(得分:18)
您可以使用COALESCE功能实现此目的:
declare @result varchar(max)
select @result = COALESCE(@result + ', ', '') + name
from users
select @result
这将在sql server 2000及更高版本(也可能是早期版本)中运行。请注意,您在sql server 2000中没有varchar(max)。
在sql server(2005及更高版本)的更高版本中,也可以使用XML Path()
执行此操作select name + ','
from users
for xml path('')
答案 1 :(得分:1)
你也可以这样做,除了它在显示到DOS shell时没有很好地格式化:
echo Batch file SQL 2005
echo.
"%PROGRAMFILES%\Microsoft SQL Server\90\Tools\BINN\osql" -S . -E -Q "SELECT name + ', ' FROM sysdatabases order by name for XML PATH('')"
答案 2 :(得分:0)
declare @result varchar(max)
set @result = ''
select @result = @result + name + ',' from users
if @result <> '' set @result = left(@result,len(@result)-1)
print @result