2013-06-11 28 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

請提供您迄今爲止的嘗試。 SO不適合人們爲你寫代碼。 –

+0

....你的日期/時間列實際上是字符類型嗎?如果你能把它們變成實際的日期/時間/時間戳類型,那將是最好的。無論如何,我們能否獲得樣本起始數據? –

回答

0

考慮創建一個「小時」表,每行一小時。然後做一個LEFT JOIN來獲得所有的時間。沒有記錄的小時行將被返回爲NULL,但如果您偏好零而不是null,則可以合併這些行。