>데이터 베이스 >MySQL 튜토리얼 >Oracle SQL에서 여러 행을 단일 행으로 집계하는 방법은 무엇입니까?

Oracle SQL에서 여러 행을 단일 행으로 집계하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 18:42:43649검색

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL은 여러 행을 단일 행으로 병합

Oracle 데이터베이스에서는 테이블의 여러 행을 하나의 행으로 병합하여 여러 열이 있는 테이블 구조를 만들어야 할 수도 있습니다. 다음 스키마를 가진 테이블이 있다고 가정합니다.

<code>A 1
A 2
B 1
B 2</code>

다음과 같은 예상 결과를 얻으려면:

<code>A 1 2
B 1 2</code>

Oracle은 이러한 요구 사항을 충족하기 위해 특정 SQL 기능을 제공합니다.

WM_CONCAT 함수(지원 중단됨)

경고: WM_CONCAT 함수는 이제 더 이상 사용되지 않으며 Oracle 12c 이상에서 제거되었습니다. 이후 버전에서 이를 사용하면 예상치 못한 결과가 발생할 수 있습니다.

<code class="language-sql">SELECT field1, WM_CONCAT(field2)
FROM YourTable
GROUP BY field2;</code>

LISTAGG 기능

최신 Oracle 버전의 경우 LISTAGG 함수를 사용하는 것이 좋습니다.

<code class="language-sql">SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2)
FROM YourTable
GROUP BY field1;</code>

맞춤 집계

사용 중인 Oracle 버전에서 WM_CONCAT이나 LISTAGG 함수를 모두 사용할 수 없는 경우 다음 단계에 따라 사용자 정의 집계를 구현할 수 있습니다.

  1. 집계된 데이터를 저장할 임시 테이블을 만듭니다.
  2. 루프나 재귀를 사용하여 임시 테이블에 필요한 데이터를 삽입합니다.
  3. 임시 테이블에서 집계 데이터를 검색합니다.

맞춤 집계는 사전 정의된 함수를 사용하는 것보다 더 복잡하고 계산 집약적일 수 있습니다.

위 내용은 Oracle SQL에서 여러 행을 단일 행으로 집계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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