SQL Server: предложение GROUP BY для получения значений, разделенных запятыми [дубликат]
Возможные Дубликаты:
функция SQL group_concat в SQL Server
Я ищу, чтобы создать запрос, но как-то я не могу этого сделать. Может кто-нибудь помочь мне здесь?
исходные данные
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
Я хочу, чтобы группа ReportId
, но все письма должны быть разделены запятыми. Так что результат должен быть:
ReportId Email
1 a@a.com, c@c.com
2 b@b.com
3 d@d.com, e@e.com
каков наилучший способ сделать это?
Я пытаюсь группу по предложению, но если есть что-то еще, то я открыт для реализации этого также. Я очень ценю ваше время и помощь. Спасибо.
2 ответа:
попробуйте это:
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
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