집 >데이터 베이스 >MySQL 튜토리얼 >저장 프로시저 없이 Oracle에서 여러 행을 단일 행으로 연결하는 방법은 무엇입니까?
Oracle에서 저장 프로시저 없이 여러 행을 단일 행으로 연결
당면한 문제는 Oracle에서 여러 행을 하나의 행으로 연결하는 방법을 찾는 것입니다. 저장 프로시저를 사용하지 않고. 주어진 데이터 세트는 질문 ID 값이 중복된 질문 ID 및 요소 ID 열로 구성됩니다. 원하는 결과는 동일한 질문 ID와 연관된 element_id 값을 단일 행으로 병합하는 것입니다.
이를 달성하려면 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 값을 연결합니다. WITHIN GROUP 절을 사용하면 연결 전에 값이 정렬됩니다.
Oracle 버전 12cR2 이상의 경우 ON OVERFLOW TRUNCATE/ERROR 절을 사용하여 문자열 길이 제한과 관련된 잠재적인 문제를 처리할 수 있습니다.
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) ON OVERFLOW TRUNCATE FROM YOUR_TABLE GROUP BY question_id;
또는
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) ON OVERFLOW ERROR FROM YOUR_TABLE GROUP BY question_id;
구문 준수 적절한 옵션을 사용하면 개발자는 Oracle에서 저장 프로시저를 만들지 않고도 여러 행을 단일 행으로 연결할 수 있습니다.
위 내용은 저장 프로시저 없이 Oracle에서 여러 행을 단일 행으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!