집 >데이터 베이스 >MySQL 튜토리얼 >Oracle에서 여러 행을 쉼표로 구분된 목록으로 결합하는 방법은 무엇입니까?
Oracle에서 행을 쉼표로 구분된 목록으로 집계
Oracle은 여러 행을 쉼표로 구분된 값을 사용하여 단일 문자열로 통합하는 여러 기능을 제공합니다. 이는 데이터 집계 및 보고서 생성을 위한 일반적인 작업입니다. 가장 눈에 띄는 기능은 WM_CONCAT
, LISTAGG
입니다.
WM_CONCAT
11.2 이전 Oracle 버전에서 사용 가능한 WM_CONCAT
은 지정된 구분 기호를 사용하여 여러 행의 값을 연결합니다. 예를 들어 스키마 내에서 쉼표로 구분된 테이블 이름 목록을 생성하려면 다음을 수행하세요.
<code class="language-sql">SELECT WM_CONCAT(table_name) FROM user_tables;</code>
취업 LISTAGG
Oracle 11.2에 도입된 LISTAGG
은 WM_CONCAT
보다 향상된 기능을 제공합니다. 구분 기호 지정 및 NULL 값 처리를 포함하여 더 큰 제어가 가능합니다. 다음 예에서는 NULL 항목을 생략하고 쉼표로 구분된 테이블 이름 목록을 만듭니다.
<code class="language-sql">SELECT LISTAGG(table_name, ', ') WITHIN GROUP (ORDER BY table_name) FROM user_tables;</code>
실습
각 개인의 여러 시민권 기록을 검색하는 쿼리를 상상해 보세요. 중복 항목을 피하기 위해 LISTAGG
를 하위 쿼리로 사용하여 개인별로 쉼표로 구분된 단일 시민권 목록을 생성할 수 있습니다.
<code class="language-sql">SELECT person_id, (SELECT LISTAGG(citizenship, ', ') WITHIN GROUP (ORDER BY citizenship) FROM citizenship WHERE person_id = t.person_id) AS citizenship_list FROM person t;</code>
citizenship_list
열에 쉼표로 구분된 시민권 문자열이 포함된 한 사람당 단일 행이 반환됩니다.
요약
WM_CONCAT
및 LISTAGG
은 Oracle에서 여러 행을 쉼표로 구분된 목록으로 집계하는 강력하고 다양한 방법을 제공합니다. 이러한 기능은 데이터 조작을 간소화하고 SQL 쿼리의 명확성을 향상시킵니다.
위 내용은 Oracle에서 여러 행을 쉼표로 구분된 목록으로 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!