sql - 如何按小时分组?
问题描述
我需要创建一个报告,显示当前日期每小时创建的块数。
如果没有创建块,我需要在它旁边显示小时和 0。
我必须为此使用访问权限。我尝试了很多东西,但编译的唯一代码就是这个。
SELECT Hour(DateOfCreation) As Hour , Count(*) AS amount
FROM tblBlock
WHERE DateOfCreation = Date ()
GROUP BY Hour(DateOfCreation)
我的代码给了我创建块的时间,但我不知道如何添加没有创建块的时间。
解决方案
您可以创建一个小查询来为您提供 10 个数字:
SELECT DISTINCT Abs([id] Mod 10) AS N
FROM MSysObjects;
将此保存为十并在另一个查询中使用它两次:
SELECT TimeSerial([Ten_0].[N]+[Ten_1].[N]*10,0,0) AS [Hour]
FROM Ten AS Ten_0, Ten AS Ten_1
WHERE ((([Ten_0].[N]+[Ten_1].[N]*10)<24))
ORDER BY TimeSerial([Ten_0].[N]+[Ten_1].[N]*10,0,0);
要返回整数小时(以匹配您的查询),请使用以下变体:
SELECT [Ten_0].[N]+[Ten_1].[N]*10 AS [Hour]
FROM Ten AS Ten_0, Ten AS Ten_1
WHERE ((([Ten_0].[N]+[Ten_1].[N]*10)<24))
ORDER BY TimeSerial([Ten_0].[N]+[Ten_1].[N]*10,0,0);
现在,要么修改它以包含您的原始查询,要么在第三个查询中使用它,您可以在上面的查询时间和原始查询的时间之间创建一个外连接。它可能是这样的:
SELECT HoursOneDay.Hour, YourQuery.Amount
FROM HoursOneDay
LEFT JOIN YourQuery ON HoursOneDay.Hour = YourQuery.Hour;
对于没有小时数的条目,金额字段将为空。应用Nz或设置显示值的格式。
推荐阅读
- microsoft-graph-api - 为多个资源创建 microsoft graph API 订阅
- swift - 为 heightconstraint.constant 赋值时出现 lldb 错误
- python - 模块在 python shell 中工作,但在 jupyter 笔记本中不工作
- javascript - 在 JavaScript 中模拟堆栈分配
- php - 非固定宽度正后视
- c# - 在 WCF 服务中获取肥皂信封内容
- javascript - 移除元素时的 DOM 事件
- php - CodeIgniter 文件插入数据库而不是文件夹
- jquery - 单击一个手风琴时如何关闭其他手风琴,以及如何在隐藏父级时隐藏描述?
- android - Android Studio Firebase 数据库如何在调用中获取另一个类的值