2015-02-26 5 views
-3

Я пытаюсь добавить общее количество часов, когда flag = 1. Вот как мои данные выглядят в таблице. Часы 30 минут интервалКак рассчитать общее количество часов, используя sql

ID  FullDateTime    Flag 
22  2015-02-26 05:30:00.000  1  
44  2015-02-26 05:00:00.000  1 
25  2015-02-26 04:30:00.000  0 
23  2015-02-26 04:00:00.000  1 
74  2015-02-26 03:30:00.000  1 
36  2015-02-26 03:00:00.000  0 

вот что я пытался, но не работает:

select DATEDIFF(minute, sum(FullDatetime), sum(FullDatetime))/60.0 as hours     
    from myTable 
     where flag = 1 

Я ожидаю, что результаты будут через 2 часа.

+3

Что не работает? Вы вычитаете одни и те же две вещи, независимо от того, какой должна быть сумма (FullDateTime). Как вы «добавляете» две даты вместе? – DLeh

+0

Просьба (добавить к вашему вопросу) желаемый результат, основанный на ваших данных образца. –

+1

Какой номер вы ожидаете? Если это 2 часа, то, может быть, 'select count (*) * 0.5 from your_table, где flag = 1' может быть тем, что вы хотите? – jpw

ответ

1

Если общее количество часов - это всего лишь функция количества полуторачасовых периодов, отмеченных как 1, тогда простое подсчет (*) совпадающего с флагом строки 1, умноженного на 0,5 (на полчаса), должен сделать это:

select count(*) * 0.5 from myTable where flag = 1 
+0

Я пробовал это, но я всегда получаю 0 как общее количество часов – moe

+0

@moe О, я не вижу, как это будет возможно. Когда ваш образец данных должен возвратить 4, результат будет 4 * .05 = 2.0. – jpw

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