2013-06-14 2 views
1

Мне поручили отчет, в котором будет показана гистограмма, где ось Х - это часы сдвига, поэтому 1-8 по дну. Бары - это количество транзакций, совершаемых в час. Таким образом, гистограмма легко позволит вам увидеть, что в первый час мы обработали 30 заказов, час 2, которые мы обработали 25, и так далее, до конца смены.Данные запроса для часового отчета

У меня возникли проблемы с выяснением того, как на самом деле создать этот отчет. Это мой единственный вариант, чтобы сделать что-то вроде этого (понимаю, что это просто псевдо-код, не беспокойтесь, комментируя по вопросам синтаксиса):

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 

Кроме того, это в хранимой процедуре, которая требует отчет.

Есть ли лучший способ сделать это? Должен ли я просто отправлять данные всего дня в отчет и как-то обрабатывать его там? Любые идеи были бы оценены.

ответ

4
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) 

Подробнее о DATEPART()here.

Вы можете конечно добавить больше группировок за день, неделю, все, что вы хотите:

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) 
+0

+1 Это дало мне гораздо лучше метод для получения данных мне нужно. Теперь я занимаюсь этим, если это решит мою проблему, я отмечу это как ответ. Спасибо! –

Смежные вопросы