2008-10-07 11 views
34

Şu anda, böyle bir SQL sorgusu vardır: Böyle, hepsi tek bir satırda sonuçları döndürmek istiyorumBirden çok satırı SQL Server 2005'te virgülle ayrılmış bir listeyle nasıl birleştirebilirim?

X Y 
---------- 
12 3 
15 2 
18 12 
20 29 

(uygun:

SELECT X, Y FROM POINTS 

O kadar benzeri sonuçları döndürür bir HTML <ALAN> etiketi) kullanmak için:

XYLIST 
---------- 
12,3,15,2,18,12,20,29 

sadece SQL kullanarak bunu yapmanın bir yolu var mı?

+0

Uygulamanızı ölçeklendirmek isterseniz, Veritabanının dışında böyle bir şey yapmak daha iyi olabilir. Veritabanı neredeyse her zaman darboğaz olacaktır. –

+0

Acaba niçin iyi cevaplar gitti? –

+0

@Joseph Bui - İnan bana, biliyorum. Ne yazık ki proje lideri bu şekilde yaptığımı ısrar ediyor. –

cevap

22
DECLARE @XYList varchar(MAX) 
SET @XYList = '' 

SELECT @XYList = @XYList + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y) + ',' 
FROM POINTS 

-- Remove last comma 
SELECT LEFT(@XYList, LEN(@XYList) - 1) 
lider
+0

Bu benim mi, yoksa bağlantılı bir sunucuda çalışmıyor mu? SELECT @List = @List + CONVERT (varchar, ID) + ',' FROM LinkedServer.MyDatabase.dbo.MyTable 'gibi bir şey denediğimde her zaman yalnızca bir kimlik verir. Bir 'Seç *' birçok ID döndürür. – Martin

1
DECLARE @s VarChar(8000) 
SET @s = '' 

SELECT @s = @s + ',' + CAST(X AS VarChar) + ',' + CAST(Y AS VarChar) 
FROM POINTS 

SELECT @s 

Sadece hızlı ve yararlı yanıtlar çocuklar için virgül

+0

Bu, önde gelen virgülden kurtulmuyor, öyle mi ...... – rainabba

9

COALESCE hile kullanarak, endişelenmenize gerek yok son nokta:

+0

Bu diğer yandan harika çalışıyor! – rainabba

İlgili konular