[英]How to write sql to convert one string from mutiple rows?
假设我有一个包含以下类型数据的表:
Tab(id, myString)
1 A
2 B
3 C
...
我想让SQL可以为myString列中的所有值返回所有一个字符串。 所以我想要的结果看起来像:“ A,B,C”
如果我不想使用游标和存储过程,sql是否有可能获得这种结果?
使用T-SQL行串联:
declare @s varchar(max)
set @s = ''
select @s = @s +
case when @s = '' then '' else ', ' end + Letter
from MyTable
select @s
编辑删除的尾随“,”
结合使用FOR XML PATH (提供一个空元素名称)和STUFF是一种常见的SQL Server(2005+)技术。 它不需要声明任何局部变量,因此可以在批处理或过程之外运行。
SELECT STUFF(
(SELECT ',' + t.myString
FROM TAB t
ORDER BY t.Id
FOR XML PATH('')),1,1,'') AS CSV
Declare @tbl table(ID nvarchar(1),[myString] nvarchar(100))
Insert into @tbl values(1,'A');
Insert into @tbl values(2,'B');
Insert into @tbl values(3,'C');
DECLARE @CSVList varchar(100)
SELECT @CSVList = COALESCE(@CSVList + ' , ', '') +
[myString]
FROM @tbl
SELECT @CSVList
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.