SQL Server의 GROUP BY를 사용하여 고유 값을 쉼표로 구분된 목록으로 집계
도전:
중복 항목이 있는 테이블이 있는 경우 목표는 특정 열을 기준으로 데이터를 그룹화하고 다른 열의 고유 값을 쉼표로 구분된 단일 문자열로 통합하는 것입니다.
샘플 데이터:
다음 표는 초기 데이터 세트를 보여줍니다.
ID | ReportId | |
---|---|---|
1 | 1 | [email protected] |
2 | 2 | [email protected] |
3 | 1 | [email protected] |
4 | 3 | [email protected] |
5 | 3 | [email protected] |
목표 결과:
원하는 결과는 통합 이메일 주소가 포함된 테이블입니다.
ReportId | |
---|---|
1 | [email protected], [email protected] |
2 | [email protected] |
3 | [email protected], [email protected] |
GROUP BY 및 STUFF를 사용한 솔루션:
STUFF
함수는 문자열을 효율적으로 연결하고 선행 문자를 제거하는 데 사용됩니다. 해결책은 다음과 같습니다.
<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
함수 내의 하위 쿼리가 포함됩니다. 이 하위 쿼리는 외부 쿼리의 현재 행과 동일한 ReportId
을 공유하는 모든 행을 반복합니다. 일치하는 각 행에 대해 누적 문자열에 쉼표와 Email
값을 추가합니다. 그런 다음 외부 쿼리는 GROUP BY
을 사용하여 각 고유 ReportId
에 대해 연결된 이메일 문자열을 집계합니다. STUFF
함수는 첫 번째 쉼표와 공백을 제거합니다.
위 내용은 SQL Server의 GROUP BY를 사용하여 고유 값을 쉼표로 구분된 문자열로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!