-2

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

1 回答 1

0

考虑创建一个“小时”表,每个小时都有一行。然后执行 LEFT JOIN 以获取所有小时数。没有记录的小时行将返回为 NULL,但如果您更喜欢零而不是 null,则可以合并这些行。

于 2013-06-12T13:22:34.217 回答