Que dis-tu de ça? En supposant SQL Server 2008 :
SELECT CAST(StartDate as date) AS ForDate,
DATEPART(hour,StartDate) AS OnHour,
COUNT(*) AS Totals
FROM #Events
GROUP BY CAST(StartDate as date),
DATEPART(hour,StartDate)
Pour les versions antérieures à 2008 :
SELECT DATEADD(day,datediff(day,0,StartDate),0) AS ForDate,
DATEPART(hour,StartDate) AS OnHour,
COUNT(*) AS Totals
FROM #Events
GROUP BY CAST(StartDate as date),
DATEPART(hour,StartDate)
Cela se traduit par :
ForDate | OnHour | Totals
-----------------------------------------
2011-08-09 00:00:00.000 12 3