2016-05-04 26 views
0

我有具有以下值的表:顯示列值到

case code id 
100 A10 1 
100 A11 2 
100 A12 3 
101 A11 4 
102 A10 5 

我需要編寫一個查詢得到以下的輸出:

case code 
100 A10, A11, A12 
101 A11 
102 A10 

任何幫助,將不勝感激。謝謝。

+0

看看這個問題,答案 - http://stackoverflow.com/questions/273238/how-to-use-group-by-to -concatenate-strings-in-sql-server – Alexei

+0

最好的幫助是幫助你自己。谷歌PIVOT或CROSSTAB – Adish

+0

這個questin [這裏]有一個很好的帖子(http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server ) –

回答

-1

使用的東西,你可以得到預期的結果

DECLARE @Test Table([case] int, [code] varchar(20)) 
INSERT @Test([case],[code]) 
VALUES 
(100,'A10'), (100,'A11'), 
(100,'A12'), (101,'A11'), (102, 'A10') 

SELECT DISTINCT [case], 
STUFF((SELECT ', '+ code 
     FROM @Test T1 
     WHERE T1.[case] = T2.[case] 
     FOR XML PATH('')), 1, 1,'' 
    ) AS code 
FROM @Test T2 
+0

在這個答案中的技術的未重複的副本:http://stackoverflow.com/a/5981860/1507566 –

+0

@TabAlleman:與FOR XML PATH一起使用STUFF是字符串連接中用於創建逗號分隔格式的常用模式。更多的我只使用我的[舊答案](http://stackoverflow.com/a/33955969/2451726)。不同意你的倒票。 – Arulkumar

+2

與其回答已經在本網站上提出並回答的問題,我們應該引導新的提問者回答重複問題,而不是讓更多重複的網站混亂。你自己已經回答了這個問題,並重復了你自己的答案,這隻能強化我的觀點。 –