SQL Server에서 쉼표로 구분된 문자열을 사용하여 데이터 집계
SQL Server의 GROUP BY
절은 데이터 집계에 탁월합니다. 하지만 그룹화된 행의 여러 값을 쉼표로 구분된 단일 문자열로 어떻게 결합합니까?
도전:
이런 테이블을 상상해 보세요.
<code>ID ReportId Email 1 1 a@domain.com 2 2 b@domain.com 3 1 c@domain.com 4 3 d@domain.com 5 3 e@domain.com</code>
목표는 ReportId
별로 그룹화하고 각 보고서에 대해 이메일을 쉼표로 구분된 목록으로 연결하는 것입니다.
해결책: 하위 쿼리 및 FOR XML PATH
하위 쿼리와 FOR XML PATH
메소드를 사용하여 이를 달성하는 방법은 다음과 같습니다.
SELECT ReportId, Email = STUFF((SELECT ', ' + Email FROM table_name b WHERE b.ReportId = a.ReportId FOR XML PATH('')), 1, 2, '') FROM table_name a GROUP BY ReportId;
설명:
SELECT
문은 특정 ReportId
.''
은 상위 노드가 생성되지 않도록 보장합니다.STUFF
함수는 SELECT
문에 의해 추가된 선행 쉼표와 공백을 제거하여 깨끗한 쉼표로 구분된 문자열을 생성합니다.결과:
쿼리 결과는 다음과 같습니다.
<code>ReportId Email 1 a@domain.com, c@domain.com 2 b@domain.com 3 d@domain.com, e@domain.com</code>
이렇게 하면 여러 이메일 주소가 각 ReportId
에 대해 쉼표로 구분된 단일 문자열로 효과적으로 통합됩니다. 이 접근 방식은 효과적이지만 잠재적으로 더 효율적인 솔루션을 찾으려면 STRING_AGG
(이후 SQL Server 버전에서 사용 가능)과 같은 다른 데이터베이스 관련 기능을 살펴보세요.
위 내용은 SQL Server에서 GROUP BY를 사용하여 여러 값을 쉼표로 구분된 문자열로 연결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!