이전 Row의 시간 가져오는 방법 0 3 1,875

by 김성수 [2013.02.13 16:40:45]



* 현재 데이터
ID EVENTTIME
A 20120101
B 20120102
C 20120104
D 20120105

*결과물
ID INTIME OUTTIME
A   20120101
B 20120101 20120102
C 20120102 20120104
D 20120104  20120105



with a as
(
    select 'A' AS ID, '20120101' AS EVENTTIME from dual
    union all
    select 'B', '20120102' from dual
    union all
    select 'C', '20120104' from dual
    union all
    select 'D', '20120105' from dual
)
select * from a;


위와 같이 결과가 나와야하는데.. 고수님들 답변 부탁드립니다
by 임상준 [2013.02.13 17:01:28]

lag 이나 lead 함수 둘중 하나면 되지 않을까요
근데 결과값이 저게 맞는건지...


by 아발란체 [2013.02.13 17:07:04]
결과표를 보면 이전을 가지고 오는게 아닌데요.
이전을 가지고 오면 1, 2, 4, 5가 순차적으로 와야 하는데,
1, 2, 5를 순서대로 가지고 오네요.

아무튼 이전을 가지고 오는 함수는 LAG, 이후 것을 가지고 오는 함수는 LEAD입니다.

SELECT
    ID,
    LAG(EVENTTIME) OVER(ORDER BY ID ASC) AS INTIME,
    EVENTTIME
FROM
    A
ORDER BY
    ID

by 김성수 [2013.02.13 18:23:10]

글 수정했습니다.
그리고 너무  감사합니다. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입