2013-06-11 5 views
-2

선택 쿼리를 작성하여 시간별 레코드 수를 얻을 수있게 도와주세요. 특정 시간 동안 테이블에 사용 가능한 레코드가 없더라도 출력에 24 시간 모두 표시되기를 원합니다. 예를SQL 시간별 쿼리 선택

Date  Hour Record count 
---------------------------- 
2013/03/01 00 - 100 
2013/03/01 01 - 0 (No records available in the table) 
2013/03/01 02 - 200 
2013/03/01 03 - 300 
2013/03/01 04 - 0 (No records available in the table) 

에 대한

... 그것은 23시간까지 ...

이 내가 현재 사용하고있는 쿼리는 ...에 ... 간다

SELECT VALUE.DATETIME, COUNT(*) as TOTALPOBYCREATEDTIMEANDDATE 
FROM (SELECT CASE WHEN LENGTH(TRIM(TIMECOL)) <= 4 
         THEN DATECOL CONCAT '00' 
        WHEN LENGTH(TRIM(TIMECOL)) = 5 
         THEN DATECOL CONCAT '0' CONCAT SUBSTR(TRIM(TIMECOL),1,1) 
        ELSE DATECOL CONCAT SUBSTR(TRIM(TIMECOL),1,2) END as DATETIME 
     FROM ORDLIB/ORDERTABLE 
     WHERE DATECOL LIKE '201303%') VALUE 
GROUP BY VALUE.DATETIME 
ORDER BY VALUE.DATETIME 
+3

지금까지 시도해보십시오. 그래서 사람들이 코드를 작성하기 위해 여기에 있지 않습니다. –

+0

.... 실제로 날짜/시간 열은 실제로 문자 유형입니까? 실제 날짜/시간/타임 스탬프 유형으로 변환 할 수 있다면 가장 좋을 것입니다. 그럼에도 불구하고 샘플 시작 데이터를 얻을 수 있습니까? –

답변

0

매시간 행이있는 '시간'테이블을 만드는 것을 고려하십시오. 그런 다음 LEFT JOIN을 수행하여 모든 시간을 표시하십시오. 레코드가없는 시간 열은 NULL로 반환되지만 null 대신 0을 선호하면 COALESCE 수 있습니다.