【发布时间】:2011-05-17 19:18:54
【问题描述】:
我有一个应用程序,它可能一天运行多次。每次运行都会将数据写入表中以报告发生的事件。主报告表如下所示:
Id SourceId SourceType DateCreated
5048 433 FILE 5/17/2011 9:14:12 AM
5049 346 FILE 5/17/2011 9:14:22 AM
5050 444 FILE 5/17/2011 9:14:51 AM
5051 279 FILE 5/17/2011 9:15:02 AM
5052 433 FILE 5/17/2011 12:34:12 AM
5053 346 FILE 5/17/2011 12:34:22 AM
5054 444 FILE 5/17/2011 12:34:51 AM
5055 279 FILE 5/17/2011 12:35:02 AM
我知道有两次运行,但我想要一种能够查询日期范围、进程运行次数的方法。我想要一个查询,结果是进程开始的时间和组中的文件数。这个查询让我得到了我想要的东西,我可以看到运行的日期和时间以及运行了多少文件,但不完全是我想要的。例如,它不适合从 8:58 到 9:04 的跑步。例如,它还会对在 9:02 和 9:15 开始的跑步进行分组。
Select dateadd(day,0,datediff(day,0,DateCreated)) as [Date], datepart(hour, DateCreated) as [Hour], Count(*) [File Count]
From MyReportTable
Where DateCreated between '5/4/2011' and '5/18/2011'
and SourceType = 'File'
Group By dateadd(day,0,datediff(day,0,DateCreated)), datepart(hour, DateCreated)
Order By dateadd(day,0,datediff(day,0,DateCreated)), datepart(hour, DateCreated)
我知道任何靠近的跑步都可能会被组合在一起,我对此很好。我只希望得到一个粗略的分组。
谢谢!
【问题讨论】:
标签: sql sql-server gaps-and-islands