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 39224 게시물 읽기
No. 39224
두 날짜사이의 월 구하는 쿼리 GROUP BY 질문입니다.
작성자
박주영(vf19)
작성일
2012-01-11 16:35
조회수
4,953

 SELECT M.MEMBER_ID MEMBER_ID,

                 TO_CHAR(ADD_MONTHS(M.INCOME_DATE,LEVEL - 1),'YYYYMM') 월
  FROM (
        SELECT MEMBER_ID,
               MIN(INCOME_DATE) INCOME_DATE
          FROM S_INCOME_INFO
        GROUP BY MEMBER_ID
      ) M
CONNECT BY ADD_MONTHS(M.INCOME_DATE,LEVEL - 1) <= SYSDATE
 
제 쿼리는 위와 같습니다. 
S_INCOME_INFO 라는 테이블에서 MEMBER_ID 별로 최소 날짜를 가져와서 현재날짜와 
비교해 그 사이의 월을 구했습니다.
문제는 이 쿼리는 별로 문제가 없는데
M.MEMBER_ID 로 그룹을 다시 묶고, 월이라는 부분을 COUNT 하면 발생합니다.
제가 구하고 싶은 것은 MEMBER_ID 별로 처음 날짜와 현재 날짜 사이의 월의 갯수인데,
MEMBER_ID 로 다시 그룹을 지으면 실행은 되지만 결과가 나오지 않습니다.
조언 부탁드립니다.
 
이 글에 대한 댓글이 총 2건 있습니다.

행을 달수만큼 복제해서 그룹바이 카운트하려고 하시네요...
MONTHS_BETWEEN 이란 함수를 모르셔서 그런듯...


참고로...
CONNECT BY LEVEL <= n 로 해서 n 개 행으로 복제하는 방법은
대상 자료가 1건일때만 사용하는 방법입니다.
여러건의 자료에 Connect By 걸면 행이 기하급수로 늘어납니다.
데이터가 많으면 결과가 안나올 정도로 느려집니다.
주의해야 하구요...

마농(manon94)님이 2012-01-11 16:56에 작성한 댓글입니다.

 아..그렇군요.. 함수가 있었네요. 

친절한 답변 감사합니다. ^^

박주영(vf19)님이 2012-01-12 12:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39228검색기간 내 일요일 기준 주간 시작, 끝 날짜 [2]
김기운
2012-01-13
4884
39227Connect By 쿼리 관련질문이요~ [7]
커넥트
2012-01-12
6600
39225쿼리는 질문있어요 ㅜㅜ [3]
정진히
2012-01-11
4119
39224두 날짜사이의 월 구하는 쿼리 GROUP BY 질문입니다. [2]
박주영
2012-01-11
4953
39223다시 한번 더 부탁드립니다. (초 응급 상황) [2]
순이
2012-01-11
3879
39221데이터베이스 튜닝을 해야되는데 간단한 인덱스 질문입니다. [2]
윤명철
2012-01-11
4017
39220로그 남기기 [1]
초보자
2012-01-11
3578
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다