Ответ 1
попробуйте следующее:
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 group_concat в SQL Server
Я хочу создать запрос, но каким-то образом я не могу этого сделать. Кто-нибудь может помочь мне здесь?
Исходные данные
ID ReportId Email
1 1 [email protected]
2 2 [email protected]
3 1 [email protected]
4 3 [email protected]
5 3 [email protected]
Я хочу группировать ReportId
, но все электронные письма должны быть разделены запятой. Таким образом, результат должен быть:
ReportId Email
1 [email protected], [email protected]
2 [email protected]
3 [email protected], [email protected]
Каков наилучший способ сделать это?
Я пробую предложение group by, но если есть какая-то другая вещь, тогда я также готов реализовать это. Я очень ценю ваше время и помощь в этом. Спасибо.
попробуйте следующее:
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
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)