하나의 데이터 열을 여러 데이터 열로 변환하는 것은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!