1

I want to "concatenate" all the "Text"-rows into one single row and get one row as a result. Is this even possible? I use MSSQL Server 2005.

query

Adriano Carneiro
  • 55,739
  • 12
  • 86
  • 122
f00860
  • 3,336
  • 5
  • 37
  • 59

3 Answers3

2

I believe you're looking for something like this:

DECLARE @string nvarchar(max)
SET @string = N''

SELECT @string = @string + [Text] + N' ' FROM [YourTable]

SELECT @string

This will concatenate all of the values for the [Text] column into a single variable. You can then select the variable to retrieve all of the values in a single row.

John Bledsoe
  • 16,302
  • 4
  • 39
  • 59
2

Use FOR XML PATH:

SELECT [Text]+' ' AS 'text()' FROM _table FOR XML PATH('')

Another option - use string concatenation:

DECLARE @s nvarchar(max)
SELECT @s = ISNULL(@s, '') + t + ' '  FROM _table OPTION (MAXDOP 1)
SELECT @s

Please note that the latter one isn't guaranteed to work, afaik, officially the behaviour of "@s = @s + ..." for multi-row resultset is undefined.
MAXDOP 1 hint is used here to prevent the optimizer from creating a parralel execution plan, as this will yield an incorrect result for sure.

VladV
  • 9,783
  • 2
  • 30
  • 46
0

Something like:

DECLARE @result varchar(max)

SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
SELECT @result
Fermin
  • 33,739
  • 20
  • 84
  • 127