집 >데이터 베이스 >MySQL 튜토리얼 >LISTAGG를 사용하여 Oracle에서 여러 행을 단일 행으로 연결하는 방법은 무엇입니까?
Oracle에서 여러 행을 단일 행으로 연결
Oracle에서 저장 프로시저를 사용하지 않고 여러 행을 단일 행으로 연결하려면 Oracle 사용자는 LISTAGG 절을 사용할 수 있습니다. 이 절을 사용하면 지정된 구분 기호를 기반으로 효율적인 행 통합이 가능합니다.
데이터 시나리오:
다음 데이터를 고려하세요.
question_id element_id 1 7 1 8 2 9 3 10 3 11 3 12
원하는 출력:
원하는 결과는 다음과 같습니다. 각 질문 ID에 대한 element_id 값을 연결하여 결과는 다음과 같습니다.
question_id element_id 1 7,8 2 9 3 10,11,12
LISTAGG를 사용한 솔루션:
Oracle 11gR2부터 LISTAGG 절을 사용하여 다음을 달성할 수 있습니다. 이 연결:
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) FROM YOUR_TABLE GROUP BY question_id;
이 쿼리는 다음을 사용합니다. 질문 ID로 정의된 각 그룹 내에서 element_id 값을 연결하는 LISTAGG 함수입니다. ORDER BY 절을 사용하면 연결하기 전에 각 그룹 내에서 값이 정렬됩니다.
오버플로 처리:
연결된 결과 문자열이 허용되는 최대 길이를 초과하는 경우 주의하세요. 데이터 유형(예: VARCHAR2의 경우 4000자), Oracle 버전 12cR2 이상에서는 처리할 수 있는 옵션을 제공합니다. Overflow.
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) OVERFLOW TRUNCATE/ERROR FROM YOUR_TABLE GROUP BY question_id;
이 쿼리는 ON OVERFLOW TRUNCATE/ERROR 절을 지정하여 결과가 최대 길이를 초과하는 경우 자르거나 오류를 발생시킵니다.
위 내용은 LISTAGG를 사용하여 Oracle에서 여러 행을 단일 행으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!