복붙노트

[SQL] SQL 서버 : GROUP BY 절에 쉼표로 구분 된 값을 얻을 [중복]

SQL

SQL 서버 : GROUP BY 절에 쉼표로 구분 된 값을 얻을 [중복]

나는 쿼리를 만들 찾고 있어요하지만 어떻게 든 난 그렇게 할 수없는입니다. 사람이 여기에 도움이 저를 기쁘게 할 수 있습니까?

원래 데이터

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 절을하려하지만, 다른 일이있을 경우 다음 나는 또한 그것을 구현하는 개방입니다. 난 정말이에 시간과 도움을 주셔서 감사합니다. 감사합니다.

해결법

  1. ==============================

    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
    

  2. ==============================

    2.

    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) 
    
  3. from https://stackoverflow.com/questions/12668528/sql-server-group-by-clause-to-get-comma-separated-values by cc-by-sa and MIT license