728x90
UNPIVOT() 함수
UNPIVOT 테이블은 PIVOT와 반대의 개념으로 합쳐있는 것을 풀어서 보여주는 역할을 합니다.
테스트를 위해 아래와 같이 테이블을 생성하겠습니다.
CREATE TABLE UPIVOT
AS SELECT * FROM (SELECT DEPTNO, JOB, EMPNO FROM EMP)
PIVOT
(
COUNT(EMPNO)
FOR JOB IN ('CLERK' AS "CELRK",
'MANAGER' AS "MANAGER",
'PRESIDENT' AS "PRESIDENT",
'ANALYST' AS "ANALYST",
'SALESMAN' AS "SALESMAN")
);
SELECT * FROM UPIVOT;
이제 UNPIVOT로 합쳐진 결과를 풀어보겠습니다.
SELECT * FROM UPIVOT
UNPIVOT (EMPNO FOR JOB IN (CELRK, MANAGER, PRESIDENT, ANALYST, SALESMAN));
LAG() 함수
이전 행 값을 가져올 때 사용하는 함수 입니다. ( 차후 활용방법을 살펴보겠습니다. )
문법
LAG(출력할 컬럼명, OFFSET, 기본출력값)
OVER(Query_partition구문, ORDER BY 정렬할 컬럼)
SELECT ENAME, HIREDATE, SAL, LAG(SAL, 1, 0) OVER (ORDER BY HIREDATE) "LAG"
FROM EMP;
SELECT ENAME, HIREDATE, SAL, LAG(SAL, 3, 2) OVER (ORDER BY HIREDATE) "LAG"
FROM EMP;
이전의 값이 그대로 옮겨오는 것을 볼 수 있습니다.
LEAD() 함수
LEAD() 함수는 LAG()의 반대함수로 이후의 값을 가져오는 함수입니다.
문법이나 사용법은 LAG() 함수와 동일합니다. 다만, OFFSET값이 가장 마지막에 보인다는 것만 다릅니다.
SELECT ENAME, HIREDATE, SAL, LEAD(SAL, 2, 1) OVER (ORDER BY HIREDATE) "LEAD"
FROM EMP;
UNPIVOT / LAG / LEAD
728x90
'데이터베이스 > Oracle SQL' 카테고리의 다른 글
오라클 SQL과 PL/SQL ( 누계 / 비율 / 차이 구하기 ) (0) | 2021.08.08 |
---|---|
오라클 SQL과 PL/SQL ( 랭킹/순위 함수) (0) | 2021.08.05 |
오라클 SQL과 PL/SQL ( PIVOT / 달력만들기 ) (0) | 2021.08.03 |
오라클 SQL과 PL/SQL ( GROUPING SETS / LISTAGG ) (0) | 2021.08.02 |
오라클 SQL과 PL/SQL ( CUBE() 함수 / 분석함수 - 2 ) (0) | 2021.07.31 |