>데이터 베이스 >MySQL 튜토리얼 >SQL Server의 GROUP BY 및 STUFF()를 사용하여 ReportId별로 이메일을 연결하는 방법은 무엇입니까?

SQL Server의 GROUP BY 및 STUFF()를 사용하여 ReportId별로 이메일을 연결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-10 17:38:41970검색

How to Concatenate Emails by ReportId Using SQL Server's GROUP BY and STUFF()?

SQL Server에서 이메일 집계: GROUP BY 및 STUFF() 솔루션

SQL Server의 GROUP BY 절은 데이터를 요약하는 데 강력합니다. 자주 수행되는 작업은 여러 행의 값을 쉼표로 구분된 단일 문자열로 결합하는 것입니다. 이는 STUFF().

과 같은 기능을 사용하여 효율적으로 처리됩니다.

샘플 직원 보고서 테이블을 예로 들어 보겠습니다.

ID ReportId Email
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 Email
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.