【发布时间】:2017-04-11 05:04:39
【问题描述】:
希望有人可以协助修改以下 SQL 以实现所需输出中显示的结果。我对 TSQL 并不流利,但我知道足以做到这一点。
我的目标是统计我的事件数据,并从午夜开始将其分组为 15 分钟的时间段,但也包括零 (0),即在特定时间段内没有事件数据。
当前查询#
;With cte As
(SELECT CONVERT (varchar(5),DATEADD(minute, 15 *
(DATEDIFF(minute, '20000101', I.CreateTimestamp) / 15), '20000101'),108)
AS CreationTime, I.IncidentShortReference AS Ref
FROM Incident I
WHERE i.CreateTimestamp between DATEADD(d,-1,GETDATE()) and GETDATE()
)
SELECT CTE.CreationTime, count(CTE.Ref) As Count
FROM cte CTE
GROUP BY CTE.CreationTime
ORDER BY CTE.CreationTime
我的结果
CreationTime count
00:15 2
01:00 1
01:15 1
01:30 1
01:45 2
02:00 1
02:15 1
02:30 4
(Truncated)
期望的输出
CreationTime count
00:15 2
00:30 0
00:45 0
01:00 1
01:15 1
01:30 1
01:45 2
02:00 1
02:15 1
02:30 4
02:45 0
03:00 0
(Truncated)
【问题讨论】:
-
在此处包含示例数据和预期输出
-
您的数据仅在同一天?如果不是,那么在 2 个不同的日子里同一时间怎么样?
-
即使计数我也不明白它是从哪里来的......这只是一个粗略的结果
-
TriV - 与往常一样,您对问题的思考越多,您对它的思考就越多。是的,我可以看到未来在多天内按时间段对数据进行分组。
标签: sql sql-server tsql