>  기사  >  데이터 베이스  >  오라클은 열을 여러 열로 변환합니다.

오라클은 열을 여러 열로 변환합니다.

WBOY
WBOY원래의
2023-05-13 16:17:381022검색

하나의 데이터 열을 여러 데이터 열로 변환하는 것은 Oracle의 일반적인 요구 사항입니다. 예를 들어, 제품, 판매 날짜, 판매 수량을 포함하는 테이블이 있다고 가정해 보겠습니다. 이를 각 제품의 월별 매출로 변환하려고 합니다. 이 목표를 달성하는 가장 간단한 방법은 PIVOT 연산을 사용하는 것입니다.

다음은 샘플 테이블입니다.

PRODUCT   SALE_DATE   SALE_QUANTITY
-------------------------------------
A         2021-01-01  100
A         2021-01-15  200
A         2021-02-01  300
B         2021-01-01  150
B         2021-03-01  250

다음 형식으로 변환하려고 합니다.

PRODUCT   JAN_SALE  FEB_SALE  MAR_SALE
-------------------------------------
A         300       300       0
B         150       0         250

PIVOT으로 이 작업을 수행하려면 다음 SQL을 사용할 수 있습니다.

SELECT PRODUCT, 
       NVL(JAN_SALE, 0) AS JAN_SALE,
       NVL(FEB_SALE, 0) AS FEB_SALE,
       NVL(MAR_SALE, 0) AS MAR_SALE
FROM 
  (SELECT PRODUCT, 
          TO_CHAR(SALE_DATE, 'MON') AS SALE_MONTH, 
          SALE_QUANTITY
   FROM   SALES_TABLE)
PIVOT 
  (SUM(SALE_QUANTITY)
   FOR SALE_MONTH IN ('JAN' AS JAN_SALE, 'FEB' AS FEB_SALE, 'MAR' AS MAR_SALE))

위 SQL에서 먼저 변환합니다. 원래 테이블은 MONTH 열이 있는 중간 결과입니다. TO_CHAR 함수를 사용하여 SALE_DATE를 짧은 월 문자열로 변환했습니다. 그런 다음 PIVOT 연산자를 사용하여 각 월의 판매량을 열로 변환합니다. PIVOT의 구문은 매우 간결하므로 변환할 열과 값, 새 열의 이름만 지정하면 됩니다.

위 예에서는 한 달 동안 매출이 없더라도 결과에 모든 제품이 포함되도록 NVL 기능을 사용했습니다. NVL 기능을 사용하지 않으면 쿼리 결과에는 매출이 있는 제품과 월만 표시됩니다.

PIVOT 연산은 열을 여러 열로 변환하는 데 적합할 뿐만 아니라 유사한 구문을 사용하여 행을 여러 행으로 변환할 수도 있습니다. 예를 들어 지역, 제품, 판매 수량을 포함하는 테이블이 있다고 가정해 보겠습니다. 이를 제품 및 지역별 총 매출로 변환하려고 합니다. PIVOT 작업을 사용하면 이 목표를 쉽게 달성할 수 있습니다.

간단히 말하면 PIVOT 연산은 Oracle SQL에서 매우 유용하고 쉬운 도구로, 열을 여러 열로, 또는 행을 여러 행으로 빠르게 변환할 수 있습니다. 유연성과 사용자 정의가 가능한 특성으로 인해 많은 상황에서 유용합니다.

위 내용은 오라클은 열을 여러 열로 변환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.