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 38573 게시물 읽기
No. 38573
sql구간 구하기 질문이요
작성자
SQL초보
작성일
2011-05-27 15:14
조회수
4,227

쿼리 질문이 있습니다.

 

START_DT END_DT
2011-01-05 2011-09-27

이런 데이터가 있을경우

START_DT END_DT
2011-01-05 2011-01-31
2011-02-01 2011-02-28
2011-03-01 2011-03-31
2011-04-01 2011-04-30
2011-05-01 2011-05-31
2011-06-01 2011-06-30
2011-07-01 2011-07-31
2011-08-01 2011-08-31
2011-09-01 2011-09-27

 이렇게 나오게 할 방법이 있나요?

시작은 시작일부터 월말까지 이고

종료월도 종료월 첫째날 부터 종료일까지 나와야 되거든요.

어떻게 해야 될지 감이 잘 오지 않네요

도와주세요~

 

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

with t as (
select to_date('2011-01-05', 'yyyy-mm-dd') sdt, to_date('2011-09-27', 'yyyy-mm-dd') edt from dual
)
select to_char(case when level = 1 then sdt else trunc(add_months(sdt, level - 1), 'mm') end, 'yyyy-mm-dd') sdt
     , to_char(case when level = trunc(months_between(edt, sdt), 0) + 1 then edt else last_day(add_months(sdt, level - 1)) end, 'yyyy-mm-dd') edt
  from t
 connect by level <= trunc(months_between(edt, sdt), 0) + 1

 

[ 결과 ]

sdt        edt

-----------------------

2011-01-05 2011-01-31
2011-02-01 2011-02-28
2011-03-01 2011-03-31
2011-04-01 2011-04-30
2011-05-01 2011-05-31
2011-06-01 2011-06-30
2011-07-01 2011-07-31
2011-08-01 2011-08-31
2011-09-01 2011-09-27

知音(sunnylee72)님이 2011-05-27 15:28에 작성한 댓글입니다.
이 댓글은 2011-05-27 15:28에 마지막으로 수정되었습니다.

WITH t AS
(
SELECT TO_DATE('2011-01-05', 'yyyy-mm-dd') sdt
     , TO_DATE('2011-09-27', 'yyyy-mm-dd') edt
  FROM dual
)
SELECT GREATEST(ADD_MONTHS(TRUNC(sdt, 'mm'), level - 1), sdt) sdt
     , LEAST(   ADD_MONTHS(TRUNC(sdt, 'mm'), level) - 1, edt) edt
  FROM t
 CONNECT BY LEVEL <= MONTHS_BETWEEN(TRUNC(edt, 'mm'), TRUNC(sdt, 'mm')) + 1
;

마농(manon94)님이 2011-05-27 15:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38576프로시저 스크립트 내에서 자신의 프로시저명(이름) 구하는 방법
한동훈
2011-06-01
3198
38575오라클 설치시 out of memory 가 뜹니다... [1]
설치에러..
2011-05-31
4504
38574순차적으로 증가하는 값으로 trigger 생성하기 [4]
김홍찬
2011-05-29
5609
38573sql구간 구하기 질문이요 [2]
SQL초보
2011-05-27
4227
38572프로시져 내부 WHERE 절에서 '변수' 처리 사용할때... [5]
라클리
2011-05-27
5987
38571프로시져에서 시스템 테이블 사용시 에러 (ORA-00942) [2]
라클리
2011-05-26
5380
38570for 문을 거꾸로 돌리고 싶어요ㄱ- [3]
이종민
2011-05-26
4846
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다