자신과 그 다음 데이터와 비교를 하는 sql을 만들고자 합니다. 1 2 1,470

by 이승언(폴리) [SQL Query] [2014.01.03 11:35:16]


WITH T AS
(         SELECT '20131202030306' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202030419' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202030649' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202030855' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202030959' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202031004' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202032102' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202033709' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202033721' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202034621' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202034625' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202034641' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202034955' REG_DTTM FROM DUAL
UNION ALL SELECT '20131202035239' REG_DTTM FROM DUAL
)
SELECT    RET_DTTM
    ,    ROWNUM AS RN
  FROM    T
ORDER    BY REG_DTTM ASC
;

ROWNUM 순서대로 정렬한 후, 자신 바로 다음건과 비교하여 시간차를 구하고자 합니다.
EX) ROWNUM = 1 이면,  ROWNUM = 2 인 데이터와 비교하는 것이지요.
      ROWNUM = 2 이면,  ROWNUM = 3
      ROWNUM = 3 이면,  ROWNUM = 4
      ...

여기에 질문밖에 올릴게 없네요.  T,T 고견 부탁드립니다.
by 기믹스 [2014.01.03 12:11:33]

LEAD()

SELECT 
REG_DTTM, 
LEAD(reg_dttm, 1) OVER(ORDER BY ROWNUM ASC), 
LEAD(reg_dttm, 1) OVER(ORDER BY ROWNUM ASC)-REG_DTTM
FROM T

by 마농 [2014.01.03 13:14:41]
SELECT reg_dttm
     , LEAD(TO_TIMESTAMP(reg_dttm)) OVER(ORDER BY reg_dttm)
     - TO_TIMESTAMP(reg_dttm) interval
  FROM t
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입