帮我编写一个选择查询以按小时获取记录计数。即使表格中没有特定小时的记录,我也希望输出中显示所有24小时。
例如
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
答案 0 :(得分:0)
考虑创建一个'hours'表,每小时都有一行。然后执行LEFT JOIN以获得所有时间。没有记录的小时行将返回为NULL,但如果您更喜欢零而不是null,则可以COALESCE。