SQL按小时选择查询

时间:2013-06-11 16:04:02

标签: sql ibm-midrange

帮我编写一个选择查询以按小时获取记录计数。即使表格中没有特定小时的记录,我也希望输出中显示所有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

1 个答案:

答案 0 :(得分:0)

考虑创建一个'hours'表,每小时都有一行。然后执行LEFT JOIN以获得所有时间。没有记录的小时行将返回为NULL,但如果您更喜欢零而不是null,则可以COALESCE。