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 41183 게시물 읽기
No. 41183
기간 사이의 날짜 뽑아 내기 질문 입니다.
작성자
ASKO912
작성일
2016-06-22 13:39
조회수
9,576

안녕하세요

쿼리 질문이 있는데요.

기간 사이의 날짜를 전부 뽑으려고 하는데

 

WITH T AS (SELECT '2015-03-09' FR_YMD ,'2015-08-15' TO_YMD FROM DUAL
)
SELECT DISTINCT TO_CHAR(TO_DATE(FR_YMD,'YYYY-MM-DD') + LEVEL -1 ,'YYYY-MM-DD') DT
FROM T
CONNECT BY LEVEL <= TO_DATE(TO_YMD,'YYYY-MM-DD')-TO_DATE(FR_YMD,'YYYY-MM-DD') +1
 

이렇게 한줄로 되어있는 데이터는 뽑을 수 있는데

 

WITH T AS (SELECT '2015-03-09' FR_YMD ,'2015-08-15' TO_YMD FROM DUAL
            union all SELECT '2015-08-16' FR_YMD ,'2015-12-31' TO_YMD FROM DUAL
)

SELECT TO_CHAR(TO_DATE(FR_YMD,'YYYY-MM-DD') + LEVEL -1 ,'YYYY-MM-DD') DT
FROM T
CONNECT BY LEVEL <= TO_DATE(TO_YMD,'YYYY-MM-DD')-TO_DATE(FR_YMD,'YYYY-MM-DD') +1
 

이렇게 두개나 세개가 있으면 조인되서 수만개가 나오더군요...

DISTINCT를 쓰면 멈추고....

 

어떻게 해결해야 될까요?

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT 1 no, '2015-03-09' fr_ymd, '2015-08-15' to_ymd FROM dual
UNION ALL SELECT 2, '2015-08-16', '2015-12-31' FROM dual
)
SELECT no, fr_ymd, to_ymd
     , lv
     , TO_CHAR(fr_dt + lv - 1, 'yyyy-mm-dd') ymd
  FROM (SELECT no, fr_ymd, to_ymd
             , TO_DATE(fr_ymd, 'yyyy-mm-dd') fr_dt
             , TO_DATE(to_ymd, 'yyyy-mm-dd') to_dt
          FROM t
        ) a
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 999) b
 WHERE lv <= to_dt - fr_dt + 1
 ORDER BY no, lv
;


뻥튀기 결과가 나오는 원인과 해결책, 기타 다른 방법 확인
http://www.gurubee.net/article/55635

마농(manon94)님이 2016-06-22 14:30에 작성한 댓글입니다.

답변 감사합니다!

원인과 해결책 링크도 잘 봤습니다~

ASKO912님이 2016-06-24 16:11에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41186비정상데이터 connect by 조회가능할까요. [1]
김정묵
2016-06-23
7966
41185고수님들의 뜨거운 조언을 구합니다. [3]
벌집
2016-06-23
8258
41184포인트 이력 조회 [2]
IT재벌
2016-06-22
8118
41183기간 사이의 날짜 뽑아 내기 질문 입니다. [2]
ASKO912
2016-06-22
9576
41182ORACLE DB Backup 방법 문의 [4]
이성근
2016-06-22
8028
41181lock 걸린 세션 종료 후 데이터 삭제되는 현상
신재철
2016-06-21
8266
41180특정문자(대,소) 문자열만 자르기 [1]
김주환
2016-06-21
8090
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다