>데이터 베이스 >MySQL 튜토리얼 >Oracle에서 여러 행을 연결하고 그룹화하는 방법은 무엇입니까?

Oracle에서 여러 행을 연결하고 그룹화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-04 02:56:39562검색

How to Concatenate and Group Multiple Rows in 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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