2016-10-12 4 views
0

У меня есть следующая таблица со следующими значениями:T-SQL 2008: конкатенации строк, используя для пути XML и новой питающей линии каретки

create table test 
(
    folder nvarchar(20), 
    size int 
) 

Video 255 
Music 255 
Docs 255 
Papers 255 

мне нужно объединить поле папок и быть разделены запятой и новая линия. До сих пор у меня есть это:

select distinct folder + ',' as [text()] 
from test 
for xml path('') 

Это сцепить с разделены «» но я не могу получить новую линию для работы с использованием полукокса (13).

ответ

0

не 100% ясно, на ваших ожидаемых результатов, но здесь немного Hack

Declare @Test table (folder nvarchar(20),size int) 
Insert Into @Test values 
('Video' ,255), 
('Music' ,255), 
('Docs' ,255), 
('Papers',255) 

Select [text()] = Replace(cast([text()] as nvarchar(max)),'||',char(13)+char(10)) 
From (Select [text()] = (Select Distinct folder + '||' From @test For XML path(''))) A 

Возвращает

text() 
Docs 
Music 
Papers 
Video 

Еще один может быть

Declare @String varchar(max) = '' 
Select @[email protected]+Folder+char(13)+char(10) 
    From @Test 

Select [text()][email protected] 

Возвращает

text() 
Video 
Music 
Docs 
Papers