Hei!Функция агрегации 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
Hei!Функция агрегации 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
Я использовал эту статью один раз в ту же самую вещь:
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
Вы должны имитировать GROUP_CONCAT функцию MySQL.
Проверьте, пожалуйста, 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
насколько я вижу значение, просто int, так что это не проблема – alexsuslin
Сегодня это int, завтра это строка, содержащая амперсанды ... – briantyler
Я прыгал, чтобы создать пользовательскую агрегатную функцию, такую как sum(). Является ли это возможным? –
Я нашел его в вашей статье. Спасибо –