Query Records and Group por un bloque de tiempo

Tengo una aplicación que se puede ejecutar varias veces al día. Cada ejecución da como resultado datos que se escriben en una tabla para informar sobre los eventos que ocurrieron. La tabla de informes principal se ve así:

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

Puedo decir que hubo dos ejecuciones, pero me gustaría una forma de poder consultar un rango de fechas, la cantidad de veces que se ejecutó el proceso. Me gustaría tener una consulta que dé como resultado el momento en que comenzó el proceso y la cantidad de archivos en el grupo. Esta consulta me da lo que quiero en términos de que puedo ver qué día y hora y cuántos archivos se ejecutaron, pero no exactamente cómo me gustaría. Y no acomodaría ejecuciones que corrieron de 8:58 a 9:04 por ejemplo. También agruparía las ejecuciones que comenzaron a las 9:02 y las 9:15 por ejemplo.

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)

Entiendo que cualquier ejecución que esté muy cerca probablemente se agrupe, y estoy de acuerdo con eso. Solo espero obtener una agrupación aproximada.

¡Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta