Oracle의 동적 피벗: 행을 열로 변환
이 문서에서는 Oracle에서 행을 열로 동적으로 피벗하는 문제에 대해 설명합니다. 이 기술을 사용하면 키와 값이 행에 저장된 데이터를 키를 나타내는 열과 값을 나타내는 행이 있는 표 형식으로 변환할 수 있습니다.
문제
ID가 기본 키, 키(K) 및 값(V)인 테이블이 주어지면 목표는 원본 테이블에 있는 고유 키 수만큼 열이 있는 피벗 테이블을 만드는 것입니다. 쿼리는 동적으로 발생할 수 있는 알 수 없는 열 이름을 처리할 수 있어야 합니다.
Oracle 11g 솔루션
Oracle 11g는 이러한 요구 사항을 충족하는 PIVOT 작업을 제공합니다. 다음 쿼리는 그 사용법을 보여줍니다.
select * from (select id, k, v from _kv) pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
Oracle XML 피벗 옵션(Oracle 11g)
열 제목을 알 수 없는 시나리오의 경우 Oracle은 피벗 XML을 제공합니다. 옵션(쿼리에서 볼 수 있음) 아래:
select * from (select id, k, v from _kv) pivot xml (max(v) for k in (any))
편집:
댓글에서 지적한 대로 값을 집계하고 IN 절을 포함하도록 쿼리를 수정했습니다. 그러나 IN 절에 값을 지정하면 쿼리의 동적 특성이 저하됩니다.
위 내용은 Oracle에서 행을 열로 동적으로 피벗하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!