오라클 pivot 예제

Oracle Database 11g 이전에는 각 값에 대한 일종의 디코딩 함수를 통해 이를 수행하여 각 고유 값을 별도의 열로 작성합니다. 그러나 이 기술은 매우 직관적이지 않습니다. 일반 피벗 쿼리 또는 XML이 아닌 열을 출력하는 쿼리에서는 그룹에 포함할 열을 지정해야 했습니다. 앞에서 사용 했던 쿼리는 ANY 키워드를 사용 하 고 IN 절의 열을 정의 합니다. customer_id의 각 값에 대해 매출의 합계가 표시된 다음 COUNT를 볼 수 있습니다. 열 별칭에는 customer_id와 sum_sales 또는 count_sales의 별칭이 모두 포함되어 있습니다. 이를 통해 여러 열에서 Oracle PIVOT를 사용할 수 있습니다. 다행히도 이제 새 연산자 인 피벗이라는 새 연산자 (피벗)를 사용하여 크로스 탭 형식으로 쿼리를 표시하기위한 PIVOT라는 훌륭한 새로운 기능이 있습니다. 쿼리를 작성하는 방법은 다음과 같습니다: Oracle 11g은 원하는 작업을 수행하는 PIVOT 작업을 제공합니다. 쿼리에서 피벗된 열의 값에 더 나은 가독성을 위해 사용자 지정된 제목이 있어야 하는 경우 “AS” 키워드를 사용하여 동일한 제목을 지정할 수 있습니다. CUST_SALES 테이블에서 MONTH 열의 축약된 값이 전체 이름으로 대체되었습니다. 이 선택 절에 가야 한다.

피벗 절이 아닙니다! 모든 스포츠를 나열할 필요는 없습니다. 매트릭스에서 원하는 것만. 다른 스포츠의 행은 최종 테이블에서 제외됩니다. 이 규칙은 모든 피벗 형식에 적용됩니다. 목록의 값과 일치하는 행만 결과에 표시됩니다. 이 경우 메달 과 선수 목록을 행으로 가져옵니다: 예를 들어, 메달 테이블에 대 한 열을 정의 하는 구식 방법은: 지금까지 예제에서 단일 열에 단일 집계를 수행: 다른 customer_id combinat에 SUM 이온. 원하는 경우 SQL PIVOT 쿼리에서 이 작업을 확장하여 더 많은 작업을 수행할 수 있습니다. 피벗에 이들을 포함하는 것은 쉽습니다.

SQL에 더 많은 집계 함수를 추가하기만 하면 됩니다! 크로스탭 보고서에서 그림 2와 같이 구입한 시간 열을 헤더 행으로 전환하려고 합니다. 열이 마치 열이 시계 반대 방향으로 90도 회전되어 헤더 행이 되는 것처럼 열이 행이 됩니다. 이 비유적 회전에는 피벗점이 있어야 하며 이 경우 피벗점은 count(state_code) 식이 됩니다. 우리는 이미 피벗 연산자의 이점을 보았습니다. 필요에 따라 데이터를 필요한 형식으로 피벗할 수 있습니다. 여전히 개발자의 관점에서, 나는 이전의 응용 프로그램에서 파생 된 응용 프로그램을 언급 할 것이다. 다음 예제에서는 UNPIVOT 연산자의 사용을 보여 줍니다. 이 예제에서는 알파벳의 각 모음에 대해 하나씩 DUAL 테이블에서 5개의 개별 값이 선택됩니다. 이러한 각 선택 항목은 일반적으로 별도의 열로 표시됩니다(이 경우 V1, V2, V3, V4 및 V5라는 이름).

Posted in Uncategorised