IT박스

SQL Server : 쉼표로 구분 된 값을 가져 오는 GROUP BY 절

itboxs 2020. 10. 21. 07:49
반응형

SQL Server : 쉼표로 구분 된 값을 가져 오는 GROUP BY 절


중복 가능성 :
SQL Server의 SQL group_concat 함수

쿼리를 작성하려고하는데 어떻게 든 그렇게 할 수 없습니다. 누구든지 여기서 나를 도울 수 있습니까?

원래 데이터

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

이를 수행하는 가장 좋은 방법은 무엇입니까?

나는 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


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 데모

참고 URL : https://stackoverflow.com/questions/12668528/sql-server-group-by-clause-to-get-comma-separated-values

반응형