我正在尝试计算在给定时间段(通常为 15 分钟)之间的记录数,但我希望将此间隔设为变量。我的表有一个日期时间列,我需要计算两个日期之间每 15 分钟间隔的记录数,当 15 分钟窗口没有任何记录时,我需要该时间段为零。我尝试过以不同的组合使用 CTE,但无法正常工作。我可以使用 CTE 生成日期系列,但无法获得结果中的实际数据。我有一个使用带有 WHILE 循环的存储过程的工作解决方案。我希望尽可能避免这种情况,以支持或更优雅的解决方案。
这是我使用临时表的工作循环:
declare @record_count int = 0
declare @end_date_per_query datetime
create table #output (
SessionIdTime datetime,
CallCount int)
while @date_from < @date_to
begin
set @end_date_per_query = DATEADD(minute, @interval, @date_from)
select @record_count = COUNT(*) from tbl WHERE SessionIdTime between @date_from and @end_date_per_query
insert into #output values (@date_from, @record_count)
set @date_from = @end_date_per_query
end
select * from #output order by sessionIdTime
drop table #output
希望有人可以提供更优雅的解决方案。任何帮助表示赞赏。