Notice
Recent Posts
Recent Comments
Link
투케이2K
83. (DB/데이터베이스) [ORACLE] UNPIVOT , PIVOT 행 및 열 변환 함수 설명 본문
[학습 구분]
과목 : 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 (국어, 영어, 수학))
반응형
'DataBase' 카테고리의 다른 글
85. (DB/데이터베이스) [ORACLE] regexp_count 정규식 패턴 사용해 특정 문자 개수 확인 함수 설명 (0) | 2022.12.10 |
---|---|
84. (DB/데이터베이스) [ORACLE] WITH 임시 가상 테이블 생성 설명 (0) | 2022.12.10 |
82. (DB/데이터베이스) [ORACLE] REGEXP_REPLACE 정규식 수행 함수 설명 (0) | 2022.12.10 |
81. (DB/데이터베이스) ABS 절대값 함수 설명 (0) | 2022.12.10 |
80. (DB/데이터베이스) [ORACLE] ROWNUM 행 순번 확인 함수 설명 (0) | 2022.12.09 |
Comments