2013-08-07 1 views
10

Как конкатрировать много строк в одну строку?Как объединить много строк в одну строку в SQL Server 2008?

Запрос:

SELECT name FROM mytable; 

Результат:

name 
---- 
kim 
lee 
park 
cho 

Просто я хочу.

name 
---- 
kim,lee,park,cho 

Невозможный?

+0

Дубликат "MySQL: множественные строки, как разделенные запятой одну строку" –

+0

http://stackoverflow.com/questions/5196371/sql-query-concatenating-results-into-one-string – garf1eld

ответ

38

Попробуйте один -

DECLARE @temp TABLE (name NVARCHAR(50)) 

INSERT INTO @temp (name) 
VALUES ('kim'),('lee'),('park'),('cho') 

SELECT STUFF((
    SELECT ',' + name 
    FROM @temp 
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 

Выход -

kim,lee,park,cho 
+4

Объяснение того, как это работает, будет полезно для будущих посетителей. – Nubcake

8

Попробуйте

SELECT 
name= substring((SELECT (', ' + Name) 
         FROM TableName t 
         FOR XML PATH('') 
        ), 3, 1000) FROM mytable tn 
10

Я работаю над чем-то подобным этим утром, добавив, дело также будет работать 1 возвращенная строка. Надеюсь это поможет. Else перейдите по ссылке, которую отправил первый комментарий.

Declare @NameList VarChar(MAX) = ''  
select @NameList = 
    case when @NameList = '' 
     then coalesce(Name, '') 
     else @NameList + coalesce(',' + Name, '') 
    end 
from mytable 
print @NameList 

Бен