Сгруппировать и объединить много строк в одну - PullRequest
1 голос
/ 04 октября 2010

Я хочу "объединить" все строки "Текст" в одну строку и получить в результате одну строку. Это вообще возможно? Я использую MSSQL Server 2005.

query

Ответы [ 3 ]

2 голосов
/ 04 октября 2010

Использовать для XML PATH:

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

Другой вариант - использовать конкатенацию строк:

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

Обратите внимание, что последний не гарантированно работает, на самом деле, официально поведение "@s = @s + ..." для многострочного набора результатов не определено.
MAXDOP 1 подсказка используется здесь, чтобы не дать оптимизатору создать план выполнения parralel, поскольку это наверняка даст неверный результат.

2 голосов
/ 04 октября 2010

Я полагаю, вы ищете что-то вроде этого:

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

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

SELECT @string

Это объединит все значения столбца [Text] в одну переменную.Затем вы можете выбрать переменную, чтобы получить все значения в одной строке.

0 голосов
/ 04 октября 2010

Что-то вроде:

DECLARE @result varchar(max)

SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
SELECT @result
...