database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 34721 게시물 읽기
No. 34721
날짜별 정지시간 추출하는 쿼리 질문요~~
작성자
시릴로
작성일
2008-11-10 17:22ⓒ
2008-11-10 17:23ⓜ
조회수
2,121

안녕하세요.

혼자서 쑈하다가 도저히 막혀서 이렇게 질문을 올립니다.

설비명         정지일자                  정지시간                    복구일자                      복구시간
(FAC)        (STOP_DT)             (STOP_TIME)             (RCV_DT)                  (RCV_TIME)
-----------------------------------------------------------------------------------------------------------
A                20080810                    14:30                      20080812                        15:30
B                20080811                    07:00                      20080814                        12:00
C                20080811                    11:30                      20080811                        17:00


이런 테이블이 있다고할때,

설비별 / 날짜별 정지시간을 추출하려고 합니다. 그렇다면 결과가 아래와 같이 나타나야 할텐데요...


설비명        날짜            정지된 시간
(FAC)         (DT)              (STP_TM)
--------------------------------------------
A            20080810            9.5
A            20080811            24
A            20080812            15.5
B            20080811            17
B            20080812            24
B            20080813            24
B            20080814            12
C            20080811            5.5


쿼리 도움좀 부탁드리겠습니다. 어떻게 간단히 할 수 있는 방법이 있을까요? ;;;

이 글에 대한 댓글이 총 1건 있습니다.
다음처럼 쿼리해봤는데
몇 가지 문제점이 있네요

설비명이 'D', 'E' 인 경우 보정해서 사용하시면 될 것 같습니다.

select code
      ,sdt
      ,edt
      ,trunc(sdt) + rn
      ,trunc(sdt) + rn - 1
      ,case
         when edt < trunc(sdt) + rn then
          (edt - greatest((trunc(sdt) + rn - 1), sdt)) * 24
         else
          (trunc(sdt) + rn - greatest(sdt, trunc(sdt) + rn - 1)) * 24
       end
  from (select 'A' code
              ,to_Date('20080810 14:30', 'yyyymmdd hh24:mi') sdt
              ,to_Date('20080812 15:30', 'yyyymmdd hh24:mi') edt
          from dual
        union all
        select 'B' code
              ,to_Date('20080811 07:00', 'yyyymmdd hh24:mi') sdt
              ,to_Date('20080814 12:00', 'yyyymmdd hh24:mi') edt
          from dual
        union all
        select 'C' code
              ,to_Date('20080811 11:30', 'yyyymmdd hh24:mi') sdt
              ,to_Date('20080811 17:00', 'yyyymmdd hh24:mi') edt
          from dual
        union all
        select 'D' code
              ,to_Date('20080811 00:00', 'yyyymmdd hh24:mi') sdt
              ,to_Date('20080814 00:00', 'yyyymmdd hh24:mi') edt
          from dual
        union all
        select 'E' code
              ,to_Date('20080811 11:30', 'yyyymmdd hh24:mi') sdt
              ,to_Date('20080811 17:01', 'yyyymmdd hh24:mi') edt
          from dual) m
      ,(select rownum rn
          from dual
        connect by rownum < 11) copy_t
 where copy_t.rn <= (trunc(edt) + 1 - trunc(sdt))
 order by 1
         ,rn
이미영님이 2008-11-10 18:43에 작성한 댓글입니다.
이 댓글은 2008-11-10 18:44에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
34725같은 데이터값별로 번호부여에 관해 질문드릴께요 [3]
헬프미
2008-11-11
2019
34723tablespace 재확보 ... [1]
gonzi
2008-11-10
2165
34722이해가 안됩니다.ORA-00907: 우괄호가 없습니다 [1]
wenzie
2008-11-10
2434
34721날짜별 정지시간 추출하는 쿼리 질문요~~ [1]
시릴로
2008-11-10
2121
347168i db를 9i 로 옮기는 절차가 궁금합니다.
이용훈
2008-11-10
1797
34715SQL 속도가 느려지는 이유 [1]
여희수
2008-11-10
2228
34714pfk가 뭔가요?
소지민
2008-11-10
3550
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다