Work/DataBase
[ORACLE] LAG, LEAG 를 통한 선행/후행 데이터 읽어오기
bangu4
2020. 3. 9. 16:23
영어사전에서 다음 각함수의 뜻을 찾아보면 ,
LAG : 뒤에 처지다, 뒤떨어지다 -- 이전행의 데이터를 가져오는 함수
LEAD : 이끈다. 앞장서다 -- 후행 데이터를 가져오는 함수
사용법 - (컬럼명, 차이, 0 )
LAG ( expr, offset, default ) OVER ( PARTITION BY 절 or ORDER BY 절)
LEAD ( expr, offset, default ) OVER ( PARTITION BY 절 or ORDER BY 절)
보통 합계나 COUNT와 같은 그룹함수식을 이용해 나온 수치에 이전 이후 값을 보이고싶을때 사용하므로
부분그룹화하는 PARTITION 과 같이쓰이며, 정렬되어있어야 원하는 값을 신뢰성있게 가져오기에 함께 사용한다
-- LAG / LEAD 를 이용하여 특정컬럼에 선/후 행 가져오기
select 기준년월
,to_char(sum(본인여신잔액), '999,999,999,999') as 당월매출
,LAG(to_char(sum(본인여신잔액), '999,999,999,999'),1,0) OVER (ORDER BY 기준년월) 전월매출 -- 선행 데이터
,LEAD(to_char(sum(본인여신잔액), '999,999,999,999'),1,0) OVER (ORDER BY 기준년월) 다음월매출 -- 후행데이터
from e_cust_mon_info
where 기준년월 like '%2014%'
group by 기준년월
order by 기준년월
;