2013-08-07 7 views
10

Jak połączyć wiele wierszy w jeden ciąg?Jak połączyć wiele wierszy w jeden ciąg w SQL Server 2008?

Zapytanie:

SELECT name FROM mytable; 

Wynik:

name 
---- 
kim 
lee 
park 
cho 

tylko chcę.

Niemożliwe?

+0

duplikat "MySQL: Multiple wiersz jako oddzielony przecinkami jednorzędowe" –

+0

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

Odpowiedz

38

Spróbuj ten -

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, '') 

Wyjście -

kim,lee,park,cho 
+4

Wyjaśnienie, jak to działa, byłoby pomocne dla przyszłych użytkowników. – Nubcake

8

Spróbuj

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

pracuję nad czymś podobnym to rano, dodając sprawę będzie również działać na 1 zwrócił wiersz. Mam nadzieję że to pomoże. W przeciwnym razie skorzystaj z linku, do którego wysłałeś pierwszy komentarz.

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

ben

Powiązane problemy