티스토리 뷰

예를 들어 대출을 받은 고객의 대출상태 (정상, 연체)를 월별로 이력을 남겨놨다고 하자

고객의 대출상태가 변경된 월을 뽑고자 한다면 어떻게 해야 할까?

 

 

WITH  T (MM,ST)
AS (
SELECT '201601','1' FROM DUAL UNION ALL
SELECT '201602','1' FROM DUAL UNION ALL
SELECT '201603','1' FROM DUAL UNION ALL
SELECT '201604','2' FROM DUAL UNION ALL
SELECT '201605','2' FROM DUAL UNION ALL
SELECT '201606','1' FROM DUAL UNION ALL
SELECT '201607','2' FROM DUAL UNION ALL
SELECT '201608','2' FROM DUAL UNION ALL
SELECT '201609','1' FROM DUAL 
)
SELECT MM, ST
  FROM
    (
    SELECT MM, ST, LEAD(ST,1,'*') OVER(ORDER BY MM) NST 
     FROM T
    )
  WHERE ST!= NST


 

 

오라클의 LEAD 함수는 다음 레코드의 값을 가져올 때 사용하고 사용법은 다음과 같습니다.

 

LEAD(컬럼, 순서, 기본값) OVER ([PARTITION BY 그룹컬럼] ORDER BY 컬럼)

 

이전 레코드의 값과 비교하는 경우에는 LAG 함수를 사용하고 사용법은 동일합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday