오라클의 분석함수중에 Lag와 Lead에 대하여 정리해 보았다.
select lag(dates, 2) over (order by dates) pprevDate,
lag(dates, 1) over (order by dates) prevDate,
dates,
lead(dates, 1) over (order by dates) nextDate,
lead(dates, 2) over (order by dates) nnextDate,
'' space,
lag(no, 2) over (order by dates) pprevNo,
lag(no, 1) over (order by dates) prevNo,
no,
lead(no, 1) over (order by dates) nextNo,
lead(no, 2) over (order by dates) nnextNo
from (
select no, to_char(sysdate+no,'YYYY-MM-DD') dates
from dual,
(select level no from dual connect by level < 10)
)
lag(column_name, n)
: 현재 row 기준으로 n 개 이전 row 의 값의 column의 값을 표시한다.
ex) lag(no, 2) over (order by dates)
는 정렬순서는 dates를 기준으로 하여서 no 컬럼의 2번째 앞에 row의 값을 표시하게 하는 함수이다.
lead(column_name, n)
: 현재 row 기준으로 n개 이후 row의 값의 column의 값을 표시한다.
ex) lead(no, 2) over (order by dates)
는 정렬순서는 dates를 기준으로 하여서 no 컬럼의 2번째 뒤의 row의 값을 표시하게 하는 함수이다.
'Oracle' 카테고리의 다른 글
Oracle v$session 에 IP 정보 표시하기 (0) | 2016.12.29 |
---|---|
[Oracle]TIMESTAMP 활용 (0) | 2016.11.25 |
[Oracle]merge문을 이용하여 WINDOW FUNCTION 에서 나온 자료를 Update 데이터로 반영하기 (0) | 2014.12.24 |
Pivot in Oracle(11g) (0) | 2014.12.16 |
Read Only Table(11g) (0) | 2014.12.16 |