Я пытаюсь написать запрос, который преобразует поле длительности в секундах, а затем суммирует длительность в зависимости от времени и дня.SQL Sum продолжительность по часам и дням
Продолжительность - это время, в течение которого «событие» выполнялось в течение часа конечной даты.
У меня есть это:
Description | Start Date | End Date | Duration
---------------------------------------------------------------------------
ABC | 2015-08-17 10:30:30.000 | 2015-08-17 11:59:59.000 | 0 00:59:59.0
ABC | 2015-08-18 11:00:00.000 | 2015-08-18 11:30:00.000 | 0 00:30:00.0
DEF | 2015-08-17 08:25:00.000 | 2015-08-17 10:30:00.000 | 0 00:30::00.0
ABC | 2015-08-18 11:30:00.000 | 2015-08-18 11:59:59.000 | 0 00:29:59.0
И я пытаюсь получить что-то вроде этого:
Description | Date | Hour | Duration
-------------------------------------------
ABC | 2015-08-17 | 11 | 3575
ABC | 2015-08-18 | 11 | 3575
DEF | 2015-08-17 | 10 | 1800
Это запрос, я написал:
SELECT Description,
DATEPART(HOUR, EndDT), SUM(DATEPART(SECOND, CONVERT(TIME, RIGHT(Duration, LEN(Duration) -2))) +
60 * DATEPART(MINUTE, CONVERT(TIME, RIGHT(Duration, LEN(Duration) - 2))) +
3600 * DATEPART(HOUR, CONVERT(TIME, RIGHT(Duration, LEN(Duration) - 2))))
FROM table
GROUP BY Description,
DATEPART(HOUR, EndDT),
DATEADD(d, 0, DATEDIFF(d, 0, EndDT));
Этот запрос кажется, не учитывают дни, как я думал, что это произойдет, и я понятия не имею, как это исправить.
я получаю что-то вроде этого:
Description | Hour | Duration
------------------------------
ABC | 11 | 7150
DEF | 10 | 1800
Я также понимаю, что я не получил дату в отборном заявлении на данный момент, но которые могут быть добавлены позже.
Вы хотите, чтобы часы округлились вверх или вниз? – Matt