Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sql aggregate function to obtain a list

Hei!

How can I create an aggregate function to obtain a list of the aggregate values.

given :

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

I want

key list
Andrei 1,2,3
Mihai 4,5,6
like image 677
Corovei Andrei Avatar asked Feb 20 '12 09:02

Corovei Andrei


People also ask

What is LIST aggregate function in SQL?

LISTAGG function in DBMS is used to aggregate strings from data in columns in a database table. It makes it very easy to concatenate strings. It is similar to concatenation but uses grouping. The speciality about this function is that, it also allows to order the elements in the concatenated list.


1 Answers

MS SQL solution: [Note: This solution only works on SQL 2005 and later. Original question didn't specify the version in use.]

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
like image 190
alexsuslin Avatar answered Oct 06 '22 20:10

alexsuslin