시간을 받아와서 1분단위로 데이터 뿌려주는법을 모르겟습니다. 0 2 601

by 김급식잉 [Oracle 기초] [2018.03.27 15:37:19]


시간 예시가 2018년 03-27일 14시 10분이라고 가정을하고

2018년 03-27일 14시 00분 가지 1분단위로

데이터를 가져오고싶습니다

참고해야할 테이블엔 데이터가

2018년 03-27일 14시 10분  

2018년 03-27일 14시 09분

2018년 03-27일 14시 08분 

이렇게 3개의 데이터밖에 없다고 가정할때

2018년 03-27일 14시 10분  데이터

2018년 03-27일 14시 09분 데이터

2018년 03-27일 14시 08분 데이터

2018년 03-27일 14시 07분 널

2018년 03-27일 14시 06분 널

2018년 03-27일 14시 05분 널

2018년 03-27일 14시 04분 널

2018년 03-27일 14시 03분 널

2018년 03-27일 14시 02분 널

2018년 03-27일 14시 01분 널

이런식으로 비어있는 시간에는 널을 채워서 가져오고 싶은데 쿼리를 어떻게 짜야할지 모르겠어요 도와주세요 ㅠㅠ

2018년 03-27일 14시 00분

by 마농 [2018.03.27 16:31:11]
WITH data_t AS
(
SELECT '2018-03-27 14:10' tm, 1 v FROM dual
UNION ALL SELECT '2018-03-27 14:09', 2 FROM dual
UNION ALL SELECT '2018-03-27 14:08', 3 FROM dual
)
, base_t AS
(
SELECT TO_CHAR(stm + (LEVEL-1) * 1/24/60, 'yyyy-mm-dd hh24:mi') tm
  FROM (SELECT TO_DATE('2018-03-27 14:00', 'yyyy-mm-dd hh24:mi') stm
             , TO_DATE('2018-03-27 14:10', 'yyyy-mm-dd hh24:mi') etm
          FROM dual
        )
 CONNECT BY LEVEL <= (etm - stm)*24*60 + 1
)
SELECT a.tm
     , b.v
  FROM base_t a
     , data_t b
 WHERE a.tm = b.tm(+)
 ORDER BY a.tm DESC
;

 


by 김급식잉 [2018.03.27 16:34:23]

행님의 지식에 부랉을 탁 치고갑니다 !

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