1. Oracle PIVOTOracle 11g는 행을 열로 변환하는 테이블 쿼리를 작성할 수 있는 새로운 PIVOT 절을 도입했다. 따라서 피벗 작업의 출력은 시작 데이터 세트보다 더 많은 열과 더 적은 행을 반환한다. 다음은 Oracle PIVOT 절의 기본 구문을 보여 준다.
이 구문에서는 PIVOT 키워드 세 가지가 있다.
2. PIVOT 예제제품 범주, 주문 상태 및 데모용 주문 ID가 포함된 order_stats라는 새 view를 생성한다.
다음은 order_stats view의 부분 데이터이다.
이 예제에서는 PIVOT 절을 사용하여 주문 상태별로 각 제품 범주의 주문 수를 반환한다.
이 예에서는 다음을 수행합니다.
다음은 pivot_in_clause이다.
COUNT() 기능은 범주별 주문 수와 주문 상태를 반환한다. 쿼리는 결과 집합의 열 머리글에 대해 pivot_in_clause에 지정된 값을 사용한다. 다음은 결과이다. 3. PIVOT 열 별칭 지정이전 예에서 오라클은 제품 범주를 사용하여 피벗 열 이름을 생성했다. 반면 pivot_clause에서는 하나 이상의 열에 별칭을 붙이고 pivot_in_clause에서는 하나 이상의 값에 별칭을 붙일 수 있다. 일반적으로 Oracle은 다음과 같은 규칙을 사용하여 별칭을 기반으로 피벗 열의 이름을 지정한다.
다음 문에서는 위의 쿼리 예를 별칭과 함께 사용합니다.
다음은 결과이다. 보시다시피 피벗 열 이름은 아래 명명 규칙을 따른다.
pivot_clause에서 둘 이상의 집계 함수를 사용하는 경우 하나 이상의 집계 함수에 대한 별칭을 제공해야 한다. 4. 여러 열 PIVOT이전 예에서는 pivot_clause에서 aggregate 함수 하나를 사용했다. 다음 예에서는 두 개의 aggregate 함수를 사용한다.
다음은 결과이다. 5. PIVOT with 하위 쿼리pivot_in_clause에서는 하위 쿼리를 사용할 수 없다. 다음 문이 잘못되어 오류가 발생한다.
다음은 오류 메시지이다.
이 제한은 XML 옵션에서 완화된다.
다음은 결과이다. 다음은 하나의 PivotSet 샘플이다.
SQL Developer의 출력 그리드에서 XML을 보려면 다음 단계를 수행하여 XML을 설정한다. ① Tool 메뉴에서 Preferences을 선택한다. ② Database → Advanced에서 Display XML Value in Grid 옵션을 선택한다. XML 출력 형식이 non-XML 피벗 형식과 다르다. pivot_in_clause에 지정된 각 값에 대해 하위 쿼리는 단일 XML 문자열 열을 반환한다. 각 행의 XML 문자열에는 해당 행의 암시적 GROUP BY 값에 해당하는 집계된 데이터(예: 주문 수(ORDERS) 및 총 판매(SALES)가 포함된다. pivot_in_clause에서 하위 쿼리를 사용하면 Oracle은 하위 쿼리에서 반환된 모든 값을 피벗에 사용한다. 하위 쿼리는 고유한 값 목록을 반환해야 한다. 그렇지 않으면 Oracle에서 런타임 오류가 발생한다. 하위 쿼리가 고유 값 목록을 반환하는지 여부를 잘 모를 경우 하위 쿼리에서 DISTINCT 키워드를 사용할 수 있다. [출처 및 참고]
|