2012-08-09 18 views
5

Olası Çoğalt tüm değerleri birleştirirseniz:
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?sayımı (değerler)> 1, tek bir hücrede

Ben tek içine belli bir alanda tüm kayıtları birleştirmek istiyoruz Kayıtların sayısı 1'den fazlaysa (örneğin, başka bir sütundan değer) hücre Örneğin, aşağıdaki kod varsa

SELECT city, count(zoo name) AS 'count of zoo name' FROM mytable 

Aşağıda orijinal tablo bu

enter image description here

benziyor

enter image description here

sonuçları üretecek yana Atlanta ve New York hem birden fazla hayvanat bahçesi ve Tokyo tek hayvanat bahçesi vardır, Nihai sonuç,

enter image description here olarak görünmelidir. 210

Bunu yapmak için nasıl giderim? PIVOT yapısını kullanmayı düşündüm, ancak bu her olası değer için yeni sütunlar yaratır. Aynı zamanda her olası hayvanat bahçesi ismini PIVOT'a yazmam gerekiyor. Bu, asıl veriler, yukarıdaki "hayvanat bahçesi adı" nın çok daha olası değerlerine sahip olduğundan, bu kötü bir form olacaktır.

cevap

1

Sen virgül en biten kaldırmak için bu sonucu Döşeme ediyorum SQL Fiddle

+0

sütun değerini

;With Cte(city,concat) as ( select city, (select a.Zoo+',' from Sample a where a.city=b.city for XML PATH ('')) concat from Sample b group by city ) Select city,left(concat, len(concat) -1) from cte 

kontrol sonucu Concat XML Path kullanabilirsiniz. LEFT (concat, LEN (concat) -1) ' – Kermit

+0

Bu, ekstra bir', 'ile sona erer, bu yüzden bunu başka bir seçime eklemek isteyebilirsiniz ve 'sol (concat, len (concat) -1) 'concat alanına – Taryn

+0

cevabımı güncelledi. Bunu işaret ettiğinden emin olun. – praveen