2013-08-07 18 views
10

Birçok satırı bir dizeye nasıl eklenir?SQL Server 2008'de birçok satırı bir dizeye nasıl eklenir?

Sorgu:

SELECT name FROM mytable; 

Sonuç:

name 
---- 
kim 
lee 
park 
cho 

Sadece ben istiyorum.

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

İmkansız?

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

Çıktı - -

+0

Yinelenen "MySQL: virgül, tek satır ayrılmış çoklu satır" –

+0

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

cevap

38

bu bir deneyin

kim,lee,park,cho 
+4

Bunun nasıl çalıştığına dair bir açıklama gelecekteki ziyaretçiler için yararlı olacaktır. – Nubcake

8

deneyin bu

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

Ben de için çalışacak durumda ekleyerek benzer bir şey bu sabah üzerinde çalışıyor 1 satır döndü. Bu yardımcı olur umarım. Else, ilk yorumu size gönderen bağlantıyı takip eder.

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

Ben