Données de requête pour le rapport heure par heure

J'ai été chargé d'un rapport qui montrera un graphique à barres où l'axe X est les heures du quart de travail, donc 1-8 le long du bas. Les barres représentent le nombre de transactions effectuées par heure. Ainsi, le diagramme à barres vous permet de voir facilement que, dans la première heure, nous avons traité 30 commands, l'heure 2, nous avons traité 25, et ainsi de suite jusqu'à la fin du quart.

J'ai du mal à find comment créer ce rapport. Est-ce que ma seule option est de faire quelque chose comme ça (comprenez que c'est juste du pseudo-code, ne vous embêtez pas à commenter les problèmes de syntaxe):

create table #temp ( Hour int, Units int ) insert into #temp SELECT 1 as Hour, sum(Units) Units FROM orders WHERE DateCreated >= '6/14/2013 08:00:00' AND DateCreated < '6/14/2013 09:00:00' insert into #temp SELECT 2 as Hour, sum(Units) Units FROM orders WHERE DateCreated >= '6/14/2013 09:00:00' AND DateCreated < '6/14/2013 10:00:00' insert into #temp SELECT 3 as Hour, sum(Units) Units FROM orders WHERE DateCreated >= '6/14/2013 11:00:00' AND DateCreated < '6/14/2013 12:00:00' .. and so on .. select * from #temp 

En outre, il s'agit d'une procédure stockée que le rapport appelle.

Y a-t-il une meilleure manière de faire cela? Devrais-je simplement envoyer datatables de la journée entière au rapport et, d'une manière ou d'une autre, le traiter? N'importe quelles idées seraient appréciées.

 SELECT DATEPART(hh, DateCreated) AS hour, sum(Units) Units FROM orders WHERE DateCreated >= '6/14/2013' AND DateCreated < '6/15/2013' GROUP BY DATEPART(hh, DateCreated) 

En savoir plus sur DATEPART() ici .

Vous pouvez bien sûr append plus de groupements pour le jour, la semaine, ce que vous voulez:

 SELECT DATEPART(dd, DateCreated) AS day, DATEPART(hh, DateCreated) AS hour, sum(Units) Units FROM orders WHERE DateCreated >= '6/10/2013' AND DateCreated < '6/15/2013' GROUP BY DATEPART(dd, DateCreated), DATEPART(hour, DateCreated)