2010-03-08 3 views
3

Таблица1Двойной Полного проблемы

ID | WorkTime 
----------------- 
001 | 10:50:00 
001 | 00:00:00 
002 | .... 

WorkTime тип данных ** VARCHAR * (.

SELECT ID, 
     CONVERT(varchar(10), TotalSeconds1/3600) + ':' + RIGHT('00' + CONVERT(varchar(2), (TotalSeconds1 - TotalSeconds1/3600 * 3600)/60), 2) + ':' + RIGHT('00' + CONVERT(varchar(2), TotalSeconds1 - (TotalSeconds1/3600 * 3600 + (TotalSeconds1 - TotalSeconds1/3600 * 3600)/60 * 60)), 2) AS TotalWork 
From (SELECT ID, 
       SUM(DATEDIFF(second, CONVERT(datetime, '1/1/1900'), 
       CONVERT(datetime, '1/1/1900 ' + WorkTime))) AS TotalSeconds1 
      FROM table1 
     group by ID) AS tab1 
where id = '001' 

выше Запрос показывает "два раза в общей сложности времени"

Для примера

Из таблицы1 я хочу рассчитать общее время работы, когда я запустил указанный выше запрос, он показывает

ID WorkTime

001 21:40:00 
002..., 

Но он должен показать, как этот

ID Worktime 

001 10:50:00 
..., 

Как избежать двойного всего рабочего времени. Как изменить мой запрос.

Нужен Query HELP

+0

@Gopal, что случилось с предыдущим (дублированным) вопросом, который вы задали вчера? Я потратил на это некоторое время и не удалялся? –

+0

@Philip - Ошибка идет по-другому, я, наконец, узнал об ошибке. Это дает удвоенную сумму, которая означает 22:00:00 вместо 11:00:00. В запросе есть ошибка. – Gopal

+0

Является ли рабочее время фактическим временем суток или продолжительностью работы? – Kangkan

ответ

2

После создания таблиц и добавления данных, как описано в этом вопросе, я до сих пор получил ожидаемый ответ 10:50:00. Не знаю, почему он не работает для ОП ...

Для упрощения запроса и повышения производительности может быть лучше изменить определение типа для WorkTime от VARCHAR к Int. Затем сохраните рабочий интервал в виде полных секунд.

Тогда было бы просто суммировать суммы интервалов, а затем выполнить формат отображения конечного значения. (Желательно в приложении, а не в базе данных)

+2

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

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