관리 메뉴

Life goes slowly...

[Oracle] Row의 이후, 이전 값 반환 함수 - LEAD(), LAG() 본문

프로그래밍/Oracle

[Oracle] Row의 이후, 이전 값 반환 함수 - LEAD(), LAG()

빨강소 2020. 9. 4. 16:58
728x90
반응형

Oracle(오라클) LEAD 함수

Oracle(오라클)의 각 행마다 Row의 이후 행의 테이터를 가져오고 싶거나, 조회되었던 Data의 이후 Row의 값을 반환하는 함수입니다.

Oracle(오라클)의 명시된 값을 기준으로 이후 Row의 값을 반환할 때 사용되는 함수입니다.

LEAD( 컬럼값 , 순서, 디폴트) OVER ( ORDER BY 컬럼값)

 

WITH TEST AS (
SELECT 1 SEQ, '20200703' TODAY FROM DUAL UNION ALL
SELECT 2 SEQ, '20200704' TODAY FROM DUAL UNION ALL
SELECT 3 SEQ, '20200705' TODAY FROM DUAL UNION ALL
SELECT 4 SEQ, '20200706' TODAY FROM DUAL UNION ALL
SELECT 5 SEQ, '20200707' TODAY FROM DUAL
)
SELECT SEQ
     , TODAY
     , NVL(LEAD(TODAY,1) OVER(ORDER BY TODAY),0) AS Tommorow
FROM TEST 
;

#SEQ   TODAY       Tommorow
#1     20200703    20200704
#2     20200704    20200705
#3     20200705    20200706
#4     20200706    20200707
#5     20200707    0

 

Oracle(오라클) LAG 함수

Oracle(오라클)의 각 행마다 Row 이전 행의 테이터를 가져오고 싶거나, 조회되었던 Data의 이전 Row의 값을 반환하는 함수입니다.

Oracle(오라클)의 명시된 값을 기준으로 이전 Row의 값을 반환할 때 사용되는 함수입니다.

LAG( 컬럼값 , 순서, 디폴트) OVER ( ORDER BY 컬럼값)

 

WITH TEST AS (
SELECT 1 SEQ, '20200703' TODAY FROM DUAL UNION ALL
SELECT 2 SEQ, '20200704' TODAY FROM DUAL UNION ALL
SELECT 3 SEQ, '20200705' TODAY FROM DUAL UNION ALL
SELECT 4 SEQ, '20200706' TODAY FROM DUAL UNION ALL
SELECT 5 SEQ, '20200707' TODAY FROM DUAL
)
SELECT SEQ
     , TODAY
     , NVL(LAG(TODAY,1) OVER(ORDER BY TODAY),0) AS Yesterday
FROM TEST 
;

#SEQ   TODAY       Yesterday
#1     20200703    0
#2     20200704    20200703
#3     20200705    20200704
#4     20200706    20200705
#5     20200707    20200706

 

728x90
반응형
Comments