如何創建一個聚合函數來獲取聚合值的列表。
給出:
key value
Andrei 1
Andrei 2
Andrei 3
Mihai 4
Mihai 5
Mihai 6
我想
key list
Andrei 1,2,3
Mihai 4,5,6
如何創建一個聚合函數來獲取聚合值的列表。
給出:
key value
Andrei 1
Andrei 2
Andrei 3
Mihai 4
Mihai 5
Mihai 6
我想
key list
Andrei 1,2,3
Mihai 4,5,6
您需要模擬的MySQL GROUP_CONCAT功能。
檢查this article瞭解更多信息。
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
,關於這個解決方案的好處是,如果你的子字符串中有無效的xml字符,它不會炸燬..哦,哎呀,是的。 – briantyler 2012-02-20 12:14:29
據我所知值只是int,所以這不會是一個問題 – alexsuslin 2012-02-20 12:16:27
今天它是一個int,明天它是一個包含&符號的字符串... – briantyler 2012-02-20 15:11:35
我正在跳轉以創建像sum()這樣的自定義集合函數。可能嗎? – 2012-02-20 09:31:22
我在你的文章中發現它。謝謝 – 2012-02-20 09:41:05