Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

If count(values) > 1, combine all values into a single cell [duplicate]

Possible Duplicate:
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?

I would like to combine all records in a certain field into a single cell (per value from another column) if the count of the records is more than 1. For example, if I have the following code

SELECT city, count(zoo name) AS 'count of zoo name' FROM mytable

It would generate the below results

enter image description here

The original table looks like this

enter image description here

Since both Atlanta and New York have more than one zoo and Tokyo only has one zoo, the final result should look like

enter image description here

How would I go about doing this? I thought about using the PIVOT construct, but that creates new columns for each possible value. I would also have to write the name of every possible zoo name into the PIVOT. This would be bad form since the actual data has much more possible values of "zoo name" than the above.

like image 321
Lloyd Banks Avatar asked Nov 03 '22 18:11

Lloyd Banks


1 Answers

You can use XML Path to concat the column value

;With Cte(city,concat) as
(
    select city, (select a.Zoo+','
    from Sample a
    where a.city=b.city
    for XML PATH ('') )  concat
    from Sample b
    group by city
 )
Select city,left(concat, len(concat) -1) from cte

Check the result in SQL Fiddle

like image 167
praveen Avatar answered Nov 09 '22 12:11

praveen