Oracle query문 LAG, NVL 함수

최진하·2023년 2월 28일
SELECT EVENTMONITOR_KEY, SITE_KEY, PRODUCT_KEY, EXCUTEDATE, EXCUTEINFO, EVENTDATE, EMAIL_YN,
					NVL(LAG(EXCUTEDATE) OVER(PARTITION BY SITE_KEY, PRODUCT_KEY ORDER BY EXCUTEDATE DESC), TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')) AS NEXT_EXCUTEDATE
				FROM RMTEVENTMONITOR
  1. LAG
    오라클에서 제공하는 분석함수.
    이 함수는 현재 행에서 이전 N번째 행의 값을 가져올 수 있다. 이 때 N의 기본값을 1이며, ORDER BY로 정렬된 컬럼 값을 기준으로 가져온다.

해당 쿼리문에서는 ARTITION BY SITE_KEY, PRODUCT_KEY ORDER BY EXCUTEDATE DESC 조건을 사용한다. 조건은 SITE_KEY와 PRODUCT_KEY가 같은 데이터를 EXCUTEDATE 역순으로 정렬하여 현재 행 이전의 마지막 행의 EXCUTEDATE 값을 가져오겠다는 의미이다.

  1. NVL

NVL함수는 첫 번째 인자가 null이면 두번째 인자로 대체하는 함수이다.

해당 쿼리문에서는 LAG함수에서 가져온 이전 행의 EXCUTEDATE값이 null일 경우 현재 시간을 무자열로 가져오도록 TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')로 대체하게 된다.

  • 즉 해당 쿼리문은
    SITE_KEY와 PRODUCT_KEY값이 같은 컬럼중에서..
    이전행의 EXCUTEDATE값(다음 최신 날짜) 을 가져오되, 이 값이 null일 경우 현재 시간을 문자열로 대체하는 구문이다. 이 결과를 NEXT_EXCUTEDATE로 지정한다.
profile
소소한 정리

0개의 댓글