2013-03-22 2 views
0

그룹화 날짜별로 내 테이블에서 합계를 얻고 있습니다. 예를 들어, 내가 '08 .03.2013 '과 '22 .03.2013'사이의 값을 얻으려고 할 때 그림 아래를 보면. 18.03.2013 및 20.03.2013에 대한 데이터가 없습니다.며칠간 데이터가없는 테이블에서 두 날짜 사이의 값을 가져 오는 방법

프런트 엔드에서 하이 차트를 사용하고 있기 때문에 프런트 엔드에서이 날짜를 처리하지 않으려 고합니다.

의견이 있으십니까?

감사합니다 [@art에 대한 편집]

SELECT TO_CHAR(CR_DATE, 'DD') DAY, TO_CHAR(CR_DATE, 'MM') MONTH, TO_CHAR(CR_DATE, 'YY') YEAR, 
count(STAB_ID) AS total FROM paytrans 
WHERE acct_id = 1552 AND status = 'DND_FNSH' and CR_DATE > '08.03.2013' AND CR_DATE < '22.03.2013' 
GROUP BY TO_CHAR(CR_DATE, 'YY'), TO_CHAR(CR_DATE, 'DD'), TO_CHAR(CR_DATE, 'MM') 
ORDER BY year, month, day 

enter image description here

SELECT TO_CHAR(CR_DATE-1, 'DD') + LEVEL DAY, TO_CHAR(CR_DATE, 'MM') MONTH, TO_CHAR(CR_DATE, 'YY') YEAR,(cr_date-1) + LEVEL AS cr_date 
    FROM 
(
SELECT 
     To_Date('08.05.2013', 'DD.MM.YYYY') end_date, 
     To_Date('08.04.2013', 'DD.MM.YYYY') cr_date 
FROM dual  
) 
CONNECT BY LEVEL <= (end_date - cr_date)+1 
+0

이 [일정]을 확인 (http://www.perpendulum.com/2012/06/calendar-table-script-for-oracle/) 테이블 그리고 그것에 합류했습니다. –

답변

1

이 달력은 날짜에 따라입니다. 당신은 당신의 쿼리에서 날짜와 달력 날짜를 비교할 수 있습니다

SELECT cr_date 
    , to_char(cr_date, 'DD') curr_day 
    , to_char(cr_date, 'MM') curr_month 
    , to_char(cr_date, 'YYYY') curr_year 
FROM 
(
SELECT (cr_date-1) + LEVEL AS cr_date 
    FROM 
    (
    SELECT To_Date('08.05.2013', 'DD.MM.YYYY') end_date 
     , To_Date('08.04.2013', 'DD.MM.YYYY') cr_date 
     FROM dual 
    ) 
    CONNECT BY LEVEL <= (end_date - cr_date)+1 
) 
/

CR_DATE CURR_DAY CURR_MONTH CURR_YEAR 
------------------------------------------------- 
4/8/2013  08   04   2013 
4/9/2013  09   04   2013 
4/10/2013 10   04   2013 
.... 
.... 
4/30/2013 30   04   2013 
5/1/2013  01   05   2013 
5/2/2013  02   05   2013 
... 
... 
5/8/2013  08   05   2013 
+0

답장을 보내 주셔서 감사하지만 달이 다른 경우 문제가 있습니다. To_Date ('08 .05.2013 ','DD.MM.YYYY ') end_date, To_Date ('08 .04.2013', 'DD.MM .YYYY ') cr_date – Talha

+0

@ talhakosen- 무엇이 다른가요? 나는 항상 내 검색어를 테스트합니다 ...이 쿼리는 2013 년 4 월 8 일 시작일 ('08 .04.2013 ')과 2013 년 5 월 8 일 (08.05.2013) 종료일 사이의 모든 날짜를 제공합니다. 어떤 날짜를 사용하든 중요하지 않습니다. 쿼리는 모든 날짜에 사용할 수 있습니다. 형식 및 시작일/종료일이 올바른지 확인하십시오. 위의 수정 날짜를 참조하십시오. – Art

+0

편집 된 질문을 볼 수 있습니까, 일, 월, 연도 필드가 필요합니다. – Talha

관련 문제