집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server의 GROUP BY 및 STUFF()를 사용하여 ReportId별로 이메일을 연결하는 방법은 무엇입니까?
SQL Server에서 이메일 집계: GROUP BY 및 STUFF() 솔루션
SQL Server의 GROUP BY
절은 데이터를 요약하는 데 강력합니다. 자주 수행되는 작업은 여러 행의 값을 쉼표로 구분된 단일 문자열로 결합하는 것입니다. 이는 STUFF()
.
샘플 직원 보고서 테이블을 예로 들어 보겠습니다.
ID | ReportId | |
---|---|---|
1 | 1 | john@example.com |
2 | 2 | mary@example.com |
3 | 1 | jane@example.com |
4 | 3 | david@example.com |
5 | 3 | susan@example.com |
쉼표를 구분 기호로 사용하여 각 ReportId
과 연관된 이메일을 연결하려면 다음 쿼리가 작동합니다.
<code class="language-sql">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;</code>
STUFF()
함수는 문자열을 수정합니다. 문자열, 시작 위치, 제거할 문자 수, 대체 문자열 등 4개의 인수를 사용합니다.
ReportId
의 외부 쿼리 그룹입니다. FOR XML PATH('')
을 사용한 내부 쿼리는 각 그룹의 이메일을 연결합니다. STUFF()
그런 다음 선행 쉼표와 공백을 제거합니다.
쿼리 결과:
ReportId | |
---|---|
1 | john@example.com, jane@example.com |
2 | mary@example.com |
3 | david@example.com, susan@example.com |
위 내용은 SQL Server의 GROUP BY 및 STUFF()를 사용하여 ReportId별로 이메일을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!