집 >데이터 베이스 >MySQL 튜토리얼 >Oracle에서 여러 행을 연결하고 그룹화하는 방법은 무엇입니까?
Oracle의 여러 행 연결 및 그룹화
연결 및 그룹화가 필요한 여러 행이 있는 테이블이 있는 시나리오에서는 다음을 사용합니다. Oracle 11g의 LISTAGG 함수는 다음과 같은 간단한 솔루션을 제공합니다.
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) AS "names" FROM name_table GROUP BY group_name
LISTAGG 함수는 행 그룹에서 여러 값을 집계하여 지정된 구분 기호(여기서는 ',')로 구분합니다. 이는 연결 및 그룹화 프로세스를 단순화하여 원하는 결과를 생성합니다.
Oracle 11g 이전 데이터베이스의 경우 분석을 사용하는 대체 접근 방식을 사용할 수 있습니다.
SELECT grp, ltrim(max(sys_connect_by_path(name, ',' )), ',') AS scbp FROM ( SELECT name, grp, row_number() OVER (PARTITION BY grp ORDER BY name) AS rn FROM tab ) START WITH rn = 1 CONNECT BY PRIOR rn = rn - 1 AND PRIOR grp = grp GROUP BY grp ORDER BY grp
이 쿼리는 CONNECT BY를 활용합니다. 절과 row_number() 분석 함수를 사용하여 값을 반복적으로 연결하고 그룹화하여 LISTAGG와 동일한 출력을 생성합니다. 방법입니다.
위 내용은 Oracle에서 여러 행을 연결하고 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!