将数据的多行合并到sql server中的单行中

时间:2014-07-17 09:56:50

标签: sql sql-server sql-server-2008 tsql

我有一张像

这样的表格
create table temp_table (col1 int)

我在此表中有一些数据,如

insert into temp_table 
values(1), (2), (3), (4)

现在我希望输出数据如下:

1,2,3,4

我使用了查询:

select cast(col1 as nvarchar)+',' 
from temp_table 
for xml path('')

问题是输出是XML格式的,我需要它以简单的文本/字符串格式。我试着搜索转置,但到处都提到了FOR XML()而且它没有帮助我。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

declare @temp nvarchar(max)
select @temp = COALESCE(@temp + ', ', '') + CAST(col1 as nvarchar) from temp_table
select @temp

答案 1 :(得分:3)

如果你真的没有用给定的链接得到它:

select STUFF((
          SELECT ',' + cast(col1 as nvarchar)
          FROM temp_table
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

答案 2 :(得分:1)

尝试此查询

Select STUFF((SELECT ',' + Cast(col1 As nvarchar) FROM temp_table 
          FOR XML PATH('')), 1, 1, '') As MyColumn