[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)도 동일한 함수가 있네요~