>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 목록 집계를 수행하는 방법은 무엇입니까?

SQL Server에서 목록 집계를 수행하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-22 13:17:09596검색

How to Perform List Aggregation in SQL Server?

SQL Server 목록 집계에 대한 자세한 설명

관계형 데이터베이스 작업에서 데이터 집계는 여러 기록 정보를 의미 있는 요약으로 통합하는 핵심 단계입니다. 목록 집계는 여러 값을 하나의 분리된 목록으로 연결하는 집계 방법 중 하나입니다.

SQL Server 자체에서는 Oracle과 유사한 LISTAGG 기능을 직접 제공하지 않습니다. 그러나 여러 기술을 통해 동일한 기능을 구현할 수 있습니다.

방법 1: STRING_AGG(SQL Server 2017 이상)

SQL Server 2017 이상의 경우 STRING_AGG 함수는 목록 집계를 위한 깔끔한 솔루션을 제공합니다.

<code class="language-sql">SELECT FieldA
     , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
  FROM TableName
 GROUP BY FieldA
 ORDER BY FieldA;</code>

방법 2: 재귀적 CTE(SQL Server 2016 이하)

이전 버전의 SQL Server에서는 재귀적 공통 테이블 표현식(CTE)을 사용하여 목록 집계를 구현할 수 있었습니다.

<code class="language-sql">  WITH CTE_TableName AS (
       SELECT FieldA, FieldB
         FROM TableName)
SELECT t0.FieldA
     , STUFF((
       SELECT ',' + t1.FieldB
         FROM CTE_TableName t1
        WHERE t1.FieldA = t0.FieldA
        ORDER BY t1.FieldB
          FOR XML PATH('')), 1, LEN(','), '') AS FieldBs
  FROM CTE_TableName t0
 GROUP BY t0.FieldA
 ORDER BY FieldA;</code>

다른 데이터베이스와의 호환성

SQL Server 이외의 데이터베이스 시스템의 경우 다음 대안을 사용할 수 있습니다.

  • MySQL: GROUP_CONCAT
  • Oracle 및 DB2: LISTAGG
  • PostgreSQL: STRING_AGG

요약

SQL Server에는 기본 LISTAGG 기능이 없지만 유사한 기능을 구현하는 방법은 여러 가지가 있습니다. 사용 중인 SQL Server 버전에 따라 이러한 방법은 문자열 데이터를 구분된 목록으로 집계하기 위한 유연한 옵션을 제공합니다.

위 내용은 SQL Server에서 목록 집계를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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