DB/Oracle

[Oracle] LAG, LEAD - 이전 로우, 이후 로우 값 반환

콩다영 2023. 7. 5.
728x90

오라클 함수 중 이전 row나 이후 row의 값을 확인해야 하는 경우가 종종 있다.

이럴 때 쓰는 함수가 LAG(), LEAD() 함수들이다.

 

 

 

LAG  -  명시된  값을 기준으로 이전 로우의 값 반환

LAG(조건, 순서, 디폴트) OVER (PARTITION BY 절)

 

LEAD  -  명시된 값을 기준으로 이후 로우의 값 반환

LEAD(조건, 순서, 디폴트) OVER (PARTITION BY 절)

 

 

 

LAG(), LEAD()  예시 SQL문

SELECT ID
    ,  AMT
    ,  LAG(ID) OVER(ORDER BY ID) AS PREV_ID
    ,  LEAD(ID) OVER(ORDER BY ID) AS NEXT_ID
    ,  LEAD(ID,2,'ID없음') OVER(ORDER BY ID) AS T_NEXT_ID
  FROM TEST_TABLE

>>> 결과

ID AMT PREV_ID NEXT_ID T_NEXT_ID
test1 5000   test2 test3
test2 6000 test1 test3 test4
test3 7000 test2 test4 ID없음
test4 8000 test3   ID없음

 

설명

  • PREV_ID : LAG 함수 사용, 이전 로우의 ID값. 없을 경우는 NULL.
  • NEXT_ID : LEAD 함수 사용, 이후 로우의 ID값. 없을 경우는  NULL.
  • T_NEXT_ID : LEAD 함수 활용(조건절 사용), 순서 2번째부터 가져오고 defalut값으로 'ID없음'. NULL일 경우에는 'ID없음'으로 표시됨.

 

728x90
반응형

댓글