[ORACLE] 이전 ROW의 값을 불러오기

2020. 3. 24. 09:47카테고리 없음

예를 들어 날짜를 계산하는데 이전 날짜를 가져와서 어떠한 날짜로 치완하고 싶을 때...

이전 날짜를 어떻게 가져올 수 있을까??


오라클에서는 LAG, LEAD 함수를 사용한다.


LAG 함수 사용

SELECT

HIST_SEQ, 

EQUIP_NO, 

CHCK_DT, 

NVL(CHCK_DT, LAG(CHCK_DT) OVER (PARTITION BY EQUIP_NO ORDER BY HIST_SEQ)) BEFOR_CHCK_DT,  

TRET_ST_FG,

ROW_NUMBER() OVER(PARTITION BY EQUIP_NO ORDER BY HIST_SEQ DESC) RN

  FROM EQPM_CHECK_HIST


LEAD 함수

SELECT

HIST_SEQ, 

EQUIP_NO, 

CHCK_DT, 

NVL(CHCK_DT, LEAD(CHCK_DT) OVER (PARTITION BY EQUIP_NO ORDER BY HIST_SEQ DESC)) BEFOR_CHCK_DT,  

TRET_ST_FG,

ROW_NUMBER() OVER(PARTITION BY EQUIP_NO ORDER BY HIST_SEQ DESC) RN

  FROM EQPM_CHECK_HIST



두 함수의 차이는 [ LEAD - 다음값, LAG - 이전값 ] 을 가져오게 된다.


참고로 Msql(Mariadb)도 동일한 함수가 있네요~