> 데이터 베이스 > MySQL 튜토리얼 > Oracle에서 여러 행을 어떻게 연결하고 그룹화할 수 있습니까?

Oracle에서 여러 행을 어떻게 연결하고 그룹화할 수 있습니까?

DDD
풀어 주다: 2025-01-04 05:45:39
원래의
761명이 탐색했습니다.

How Can I Concatenate and Group Multiple Rows in Oracle?

Oracle에서 여러 행 연결 및 그룹화

이 문서에서는 Oracle에서 여러 행을 연결하고 그룹화하여 테이블을 변환하는 문제를 설명합니다. 분산된 데이터를 보다 체계적인 구조로 정리합니다. 다음 시나리오를 고려하십시오.

NAME 및 GROUP_NAME이라는 두 개의 열이 포함된 테이블이 있습니다.

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC
로그인 후 복사

목표는 각 고유한 GROUP_NAME 값에 대해 이름이 연결되는 결과를 생성하는 것입니다.

GROUP_NAME     NAMES
groupA         name1,name4
groupB         name2
groupC         name3,name5
로그인 후 복사

이 경우 Oracle 11g 이상에서 사용 가능한 LISTAGG 함수는 다음을 제공합니다. 간단한 솔루션:

SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
로그인 후 복사

그러나 11g 이전의 Oracle 버전으로 작업하는 경우 분석을 사용하여 동일한 결과를 얻을 수 있습니다.

select grp,
    ltrim(max(sys_connect_by_path
       (name, ',' )), ',')
        scbp
  from (select name, grp,
            row_number() over
           (partition by grp
            order by name) rn
         from tab
          )
start with rn = 1
connect by prior rn = rn-1
and prior grp = grp
  group by grp
  order by grp
로그인 후 복사

LISTAGG와 분석을 모두 활용하여 을 사용하면 Oracle에서 여러 행을 효율적으로 연결하고 그룹화하여 추가 분석 및 보고를 위해 데이터를 보다 의미 있는 표현으로 변환할 수 있습니다.

위 내용은 Oracle에서 여러 행을 어떻게 연결하고 그룹화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿