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 중국어 웹사이트의 기타 관련 기사를 참조하세요!