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 중국어 웹사이트의 기타 관련 기사를 참조하세요!