문제

월간 테이블이 있습니다 (첫 번째 요일의 행만 보유하고 있으며 각각의 고유 한 제약 조건)와 매일 비슷한 정보가있는 일일 테이블 (동일한 거래, 하루에 한 번).

Monthly table       Daily table
-------------       -----------
2009-01-01          2009-01-01
2009-02-01          2009-01-02
: :                 : :
2009-09-01          2009-01-31
                    2009-02-01
                    : :
                    2009-02-28
                    2009-03-01
                    : :
                    2009-09-01

그러나 날이없는 날이있을 수 있습니다.

월간 테이블의 각 날짜에 대해 해당 날짜와 일일 테이블의 해당 월의 최소 및 최대 날짜와 함께 반환하는 쿼리를 실행하고 싶습니다 (절대적으로 필요한 경우 표준 SQL을 사용하는 표준 SQL 사용).

따라서 1 월 마지막 주와 2 월 첫 주가 실종되면 필요합니다.

MonthStart  FirstDay    LastDay
----------  ----------  ----------
2009-01-01  2009-01-01  2009-01-24
2009-02-01  2009-02-08  2009-02-28
: :
2009-09-01  2009-09-01  2009-01-30

다음은 다음과 같습니다.

select m.date as m1,               
       dx.d1 as m2,                          
       dx.d2 as m3                           
from   monthly m,              
       ( select min(d.date) as d1,
                max(d.date) as d2        
         from   daily d            
         where  month(d.date) = month(m.date)
         and    year(d.date) = year(m.date)    
       ) as dx;

하지만 오류가 발생합니다.

DSNT408I SQLCODE = -206, ERROR: M.DATE IS NOT A COLUMN OF
AN INSERTED TABLE, UPDATED TABLE, OR ANY TABLE IDENTIFIED
IN A FROM CLAUSE, OR IS NOT A COLUMN OF THE TRIGGERING
TABLE OF A TRIGGER
DSNT418I SQLSTATE = 42703 SQLSTATE RETURN CODE

누구 든지이 작업을 수행하는 방법에 대한 조언이 있습니까?

도움이 되었습니까?

해결책

SELECT m.date as m1,               
       MIN(d.date) as m2,                          
       MAX(d.date) as m3
       -- COUNT(d.date) as NbOfDays  -- if so desired...                          
FROM monthly m
JOIN daily d ON month(d.date) = month(m.date) and year(d.date) = year(m.date) 
WHERE -- some condition
GROUP BY m.date
ORDER BY m.date -- or something else...

이 유형의 쿼리 (질문과 지금까지의 응답에 표시된 다른 쿼리와 마찬가지로, 테이블 스캔을 암시하므로 달 (x) 및 연도 (x)는 각 [예선]에 대해 계산 될 수 있기 때문에 비교적 느리게 진행됩니다. 행. (즉, Where 조항에 날짜에 범위를 두는 것).t이 계산 된 값에 열을 추가하는 데 유용 할 수 있습니다. (또는 결합 된 값 (연말)의 경우 계산이 불필요 할뿐만 아니라 기본 열 (들)을 색인화 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top