>데이터 베이스 >MySQL 튜토리얼 >SQL의 GROUP BY 절을 사용하여 열 값을 쉼표로 구분된 목록으로 결합하려면 어떻게 해야 합니까?

SQL의 GROUP BY 절을 사용하여 열 값을 쉼표로 구분된 목록으로 결합하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-14 08:07:501020검색

How Can I Combine Column Values into a Comma-Separated List Using SQL's GROUP BY Clause?

GROUP BY를 사용하여 데이터 집계: 쉼표로 구분된 목록 만들기

SQL의 GROUP BY 절은 공유 열 값을 기준으로 행을 그룹화하고 집계 함수를 적용하는 데 강력합니다. 자주 사용되는 애플리케이션은 단일 열의 값을 각 그룹에 대해 쉼표로 구분된 단일 문자열로 결합하는 것입니다.

예제 테이블을 통해 설명해 보겠습니다.

<code>ID  User  Activity  PageURL  
1  Me    act1      ab     
2  Me    act1      cd     
3  You   act2      xy     
4  You   act2      st</code>

우리의 목표는 UserActivity별로 그룹화하여 각 그룹의 PageURL 값을 연결하는 것입니다. 원하는 출력:

<code>User  Activity  PageURL  
Me    act1      ab, cd     
You   act2      xy, st</code>

STUFF()를 사용하는 SQL Server 솔루션

SQL Server에서는 GROUP BYSTUFF() 함수를 사용하여 이를 달성할 수 있습니다.

<code class="language-sql">SELECT
    [User], 
    Activity,
    STUFF(
        (SELECT DISTINCT ',' + PageURL
         FROM TableName
         WHERE [User] = a.[User] AND Activity = a.Activity
         FOR XML PATH (''))
        , 1, 1, '') AS URLList
FROM TableName AS a
GROUP BY [User], Activity</code>

설명:

  • GROUP BY [User], Activity: UserActivity의 고유한 조합을 기반으로 행을 그룹화합니다.
  • 하위 쿼리: 내부 SELECT 문은 각 그룹에 대해 고유한 PageURL 값을 검색합니다. ',' PageURL은 각 URL 앞에 쉼표를 추가합니다.
  • FOR XML PATH(''): 결과 집합을 단일 문자열로 변환하여 효과적으로 URL을 쉼표로 연결합니다.
  • STUFF(..., 1, 1, ''): 하위 쿼리에 의해 추가된 선행 쉼표를 제거하여 깔끔한 쉼표로 구분된 목록을 만듭니다.

결론:

이 접근 방식은 GROUP BY 절로 정의된 각 그룹 내에서 열 값을 쉼표로 구분된 목록으로 효과적으로 결합합니다. 이는 SQL Server의 데이터 요약 및 조작을 위한 다목적 기술입니다. 문자열 연결을 위한 특정 기능은 데이터베이스 시스템에 따라 약간 다를 수 있습니다(예: MySQL의 GROUP_CONCAT).

위 내용은 SQL의 GROUP BY 절을 사용하여 열 값을 쉼표로 구분된 목록으로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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