根据值过滤列并获取计数

时间:2019-05-16 18:20:04

标签: sql-server ssms-2014

我有一列Startime datetime2(7),数据格式为2019-05-15 22:33:55.0000000

我正在尝试过滤列并按小时获取计数

SELECT * 
FROM vehicles 
WHERE vendor = 'ford' 
  AND starttime BETWEEN '05/01/2019 00:00:00' AND '05/15/2019 23:59:59'

此查询返回日期之间的所有结果;有人可以建议如何按小时查询和计数吗?

例如,在2019年5月1日至2019年5月15日之间,计数和结果类似

 - 0 hour countX
 - 1 hour countY
 - 2 hour countZ
 - ...
 - ...
 - 23 hour countXY

计算两天之间的所有时间(预期结果为24行)

1 个答案:

答案 0 :(得分:1)

检查此。这将仅按小时细分即可提供所需的输出-

SELECT 
CAST(DATEPART(HH,starttime) AS VARCHAR) +' Hour Count ' + CAST(COUNT(*) AS VARCHAR)
FROM vehicles 
WHERE vendor='ford' 
AND starttime BETWEEN '05/01/2019 00:00:00' AND '05/15/2019 23:59:59'
GROUP BY  DATEPART(HH,starttime)