Объединить столбец таблицы в одну строку (без UDF) - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь объединить поле из нескольких записей в одну строку в SQL Server или T-SQL.

Например , у меня есть:

 ID   myString
 1    This
 2    is
 3    a
 4    test!

... и Мне нужно : This is a test!

Я могу объединить две записи , используя LAG (см. Ниже), и я подозреваю, что есть WHILE в решении (возможно, вариант в этом сообщении RedGate ), но я не уверен, что делать дальше.

create table #temp (id int, myString varchar(max));
  insert into #temp values (1,'This');
  insert into #temp values (2,'is');
  insert into #temp values (3,'a');
  insert into #temp values (4,'test!');

select 
  myString,
  LAG(myString) OVER (ORDER BY id) + ' ' + myString as [myTwoFields]
from #temp

... возвращается:

ID   myString   myTwoFields  
 1     This
 2     is        This is
 3     a         is a
 4     test!     a test!

К сожалению, Я не могу создать UDF на этом сервере. Поэтому SE Data Explorer является репрезентативным местом для тестирования:

? См. этот запрос на SEDE, или вы можете щелкнуть здесь, чтобы раскошелиться для тестирования.

Мысли? Спасибо!

1 Ответ

0 голосов
/ 04 мая 2018

Пример

Select NewStr = Stuff((Select ' ' +MyString From #temp Order by ID For XML Path ('')),1,1,'') 

Возвращает

NewStr
This is a test!

Другой вариант

Declare @S varchar(max) = ''
Select @S = ltrim(@S+' '+MyString)
 From  #Temp
 Order by ID

Select @S

Возвращает

This is a test!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...