SQL Server : GROUP BY clause to get comma-separated values

SqlSql Server-2008

Sql Problem Overview


> Possible Duplicate:
> SQL group_concat function in SQL Server

I am looking to create a query but somehow I am unable to do so. Can anyone please help me out here?

The original data

ID    ReportId     Email
1     1            a@a.com
2     2            b@b.com
3     1            c@c.com
4     3            d@d.com
5     3            e@e.com

I want to group by ReportId, but all the email should be comma separated. So the result should be:

ReportId     Email
1            a@a.com, c@c.com
2            b@b.com
3            d@d.com, e@e.com

What is the best way to do this?

I am trying the group by clause but if there is any other thing then i am open to implement that also. I really appreciate your time and help on this. Thank you.

Sql Solutions


Solution 1 - Sql

try this:

SELECT ReportId, Email = 
    STUFF((SELECT ', ' + Email
           FROM your_table b 
           WHERE b.ReportId = a.ReportId 
          FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY ReportId


#SQL fiddle demo

Solution 2 - Sql

SELECT  [ReportId], 
		SUBSTRING(d.EmailList,1, LEN(d.EmailList) - 1) EmailList
FROM
		(
			SELECT DISTINCT [ReportId]
			FROM Table1
		) a
		CROSS APPLY
		(
			SELECT [Email] + ', ' 
			FROM Table1 AS B 
			WHERE A.[ReportId] = B.[ReportId]
			FOR XML PATH('')
		) D (EmailList) 

#SQLFiddle Demo

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser867198View Question on Stackoverflow
Solution 1 - SqlJoe G JosephView Answer on Stackoverflow
Solution 2 - SqlJohn WooView Answer on Stackoverflow