투케이2K

83. (DB/데이터베이스) [ORACLE] UNPIVOT , PIVOT 행 및 열 변환 함수 설명 본문

DataBase

83. (DB/데이터베이스) [ORACLE] UNPIVOT , PIVOT 행 및 열 변환 함수 설명

투케이2K 2022. 12. 10. 09:20

[학습 구분]

과목 : Database / 데이터베이스

 

[설 명]

1. UNPIVOT , PIVOT 는 오라클 11g 부터 사용할 수 있는 함수입니다

2. UNPIVOT 은 개별 세로 [열] 데이터를 >> 가로 [행] 으로 변환해줍니다

3. PIVOT 은 개별 가로 [행] 데이터를 >> 세로 [열] 로 변환해줍니다

4. [Oracle] 코드 예시 :

 
/* [임시 가상 테이블 만들기 실시] */
WITH SAMPLE_USER AS 
(
  SELECT '홍길동' AS 이름, '국어' AS 과목명칭, 80 AS 과목점수 FROM DUAL
  UNION ALL
  SELECT '홍길동' AS 이름, '영어' AS 과목명칭, 85 AS 과목점수 FROM DUAL
  UNION ALL
  SELECT '홍길동' AS 이름, '수학' AS 과목명칭, 90 AS 과목점수 FROM DUAL
  UNION ALL
  SELECT '임꺾정' AS 이름, '국어' AS 과목명칭, 90 AS 과목점수 FROM DUAL
  UNION ALL
  SELECT '임꺾정' AS 이름, '영어' AS 과목명칭, 95 AS 과목점수 FROM DUAL
  UNION ALL
  SELECT '임꺾정' AS 이름, '수학' AS 과목명칭, 90 AS 과목점수 FROM DUAL  
)





/*
[요약 설명]
1. PIVOT : 오라클 11g 부터 사용할 수 있는 함수입니다.
2. PIVOT 은 개별 가로 행 (과목명칭) 데이터를 세로 열 로 변환해줍니다
*/





/* [쿼리문] : 원본 데이터 출력 */
--SELECT * FROM SAMPLE_USER;





/* [쿼리문] : 피벗 정렬 수행 쿼리문 (행 > 열) */
SELECT *
    FROM 
    (
       -- [FROM 절 인라인 뷰 조회]
       SELECT * FROM SAMPLE_USER
    )
PIVOT (SUM(과목점수) AS 점수 FOR 과목명칭 IN ('국어', '영어', '수학'));

 

/* [임시 가상 테이블 만들기 실시] */
WITH SAMPLE_USER AS 
(
  SELECT '홍길동' AS 이름, 80 AS 국어, 85 AS 영어, 90 AS 수학 FROM DUAL
  UNION ALL
  SELECT '임꺾정' AS 이름, 70 AS 국어, 75 AS 영어, 85 AS 수학 FROM DUAL
)





/*
[요약 설명]
1. UNPIVOT : 오라클 11g 부터 사용할 수 있는 함수입니다.
2. UNPIVOT 은 개별 세로 열 (국어, 영어, 수학) 데이터를 가로 행 으로 변환해줍니다
3. UNPIVOT (과목점수 FOR 과목명칭 IN (국어, 영어, 수학)) 는 개별 국어 , 영어, 수학 열 컬럼을 [과목 명칭 = 과목 점수] 행으로 표시합니다
*/





/* [쿼리문] : 일반 조회 쿼리문 */
SELECT * -- 
    FROM SAMPLE_USER;





/* [쿼리문] : 피벗 정렬 수행 쿼리문 (열 > 행) */
SELECT 이름,
       과목명칭,
       과목점수
    FROM 
    (
       -- [FROM 절 인라인 뷰 조회]
       SELECT * FROM SAMPLE_USER
    )
UNPIVOT (과목점수 FOR 과목명칭 IN (국어, 영어, 수학))
 

 

반응형
Comments