Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Concatenate grouped rows

I would like to know is it possible from this table

ID   Price    ServiceID
1    50       11
1    -10      12
2    100      11
2    20       11

to group by ID, sum the price and concatenate serviceID, something like this:

ID   Price    ServiceID
1    40       11,12
2    120      11

It is rather simple to group by ID and sum the price, but concatenate service IDs what is troubling me.

Thank you for participating.

like image 550
mko Avatar asked Feb 04 '12 08:02

mko


1 Answers

Use:

select t.id, sum(t.price)
    , stuff((
        select distinct ',' + cast(t2.ServiceID as varchar(max))
        from @t t2
        where t2.id = t.id
        for xml path('')
    ), 1, 1, '')
from @t t
group by t.id

Output:

----------- --------------------- ---------------------
1           40,00                 11,12
2           120,00                11
like image 164
Kirill Polishchuk Avatar answered Oct 13 '22 13:10

Kirill Polishchuk