SQL:如何将列的所有行的值作为单个值?

时间:2016-04-14 16:41:07

标签: sql sql-server

我正在使用SQL Server 2008 R2。

这是我的表:

CREATE TABLE step
(
   id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
   step_value nvarchar(max) NOT NULL
)

目前step表中有197行。我希望将step_value列的所有值作为带有分号分隔符的单个值。我怎么能这样做?

一些示例数据:

Insert Into step(step_value)
Values ('a'),('b'),('c'),('d'),('<workflow name="DISCIPLINE_LETTER">'), ('   <target>MEETING_INITIAL_MEETING_LETTER</target> ')

由于

2 个答案:

答案 0 :(得分:0)

使用STUFF功能

select stuff(
 (select '; ' + step_value 
 from step
 for xml path(''), root('MyString'), type
 ).value('/MyString[1]','nvarchar(max)')
, 1, 2, '') as step_values ;

FIDDLE

答案 1 :(得分:0)

SELECT TOP 1 (STUFF((SELECT ', ' + CAST(id AS VARCHAR(MAX)) 
         FROM step 
         FOR XML PATH ('')), 1, 2, '')) AS a
FROM step