Oracle에서 여러 행 연결 및 그룹화
Oracle에서는 그룹화 조건에 따라 레코드를 연결하는 작업이 어려울 수 있습니다. 다음과 같은 테이블을 생각해 보세요.
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
"GROUP_NAME"을 기반으로 "NAME" 열을 그룹화하고 연결하는 원하는 결과를 얻으려면 Oracle 11g 이상에서 LISTAGG 함수를 활용할 수 있습니다.
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
그러나 LISTAGG를 지원하지 않는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!