2012-02-20 77 views
7

嘿!SQL集合函數獲取列表

如何創建一個聚合函數來獲取聚合值的列表。

給出:

key  value 
Andrei 1 
Andrei 2 
Andrei 3 
Mihai 4 
Mihai 5 
Mihai 6 

我想

key list 
Andrei 1,2,3 
Mihai 4,5,6 

回答

1

您需要模擬的MySQL GROUP_CONCAT功能。

檢查this article瞭解更多信息。

2

MS SQL的解決方案: [注意:此方法僅適用於SQL 2005及更高版本。原始問題沒有指定使用的版本。]

SELECT 
key 
, STUFF((SELECT ',' + CAST([value] AS nvarchar(max)) FROM <#Table#> WHERE (key = Results.key) FOR XML PATH ('')),1,2,'') AS NameValues 
FROM <#Table#> Results 
GROUP BY key 
+0

,關於這個解決方案的好處是,如果你的子字符串中有無效的xml字符,它不會炸燬..哦,哎呀,是的。 – briantyler 2012-02-20 12:14:29

+0

據我所知值只是int,所以這不會是一個問題 – alexsuslin 2012-02-20 12:16:27

+1

今天它是一個int,明天它是一個包含&符號的字符串... – briantyler 2012-02-20 15:11:35