Я пишу простую программу отслеживания времени для управления своими собственными проектами. Я большой поклонник хранения кода отчетности в базе данных, поэтому я пытался создать несколько sprocs, которые генерируют счета и расписания и т. Д.
У меня есть таблица, которая содержит Clock Actions, IE "Punch In" и "Punch Out". Он также содержит пользователя, который выполнил это действие, проект, связанный с этим действием, и текущую дату / время.
Я могу выбрать из этой таблицы, чтобы получить входные часы для определенного времени / проекта / и пользователя, но я хочу объединить их так, чтобы каждые входные и выходные часы преобразовывались из 2 строк в одну строку, содержащую общее время.
Например, вот пример вывода:
ClockActionID ActionType DateTime
-------------------- ---------- -----------------------
17 1 2008-11-08 18:33:56.000
18 2 2008-11-08 18:33:59.587
19 1 2008-11-08 18:34:01.023
20 2 2008-11-08 18:34:02.037
21 1 2008-11-08 18:45:06.317
22 2 2008-11-08 18:46:14.597
23 1 2008-11-08 18:46:16.283
24 2 2008-11-08 18:46:17.173
25 1 2008-11-08 18:50:37.830
26 2 2008-11-08 18:50:39.737
27 1 2008-11-08 18:50:40.547
(11 row(s) affected)
Где ActionType 1 - это «ClockIn», а ActionType 2 - «ClockOut». Я также сократил столбцы Пользователь, Проект и Описание для краткости.
Мне нужно сгенерировать в чистом SQL набор результатов, например:
Description | Total Time
Для каждой пары ClockIn / ClockOut.
Я полагаю, что на самом деле это будет довольно просто, я просто не совсем уверен, как к нему подойти.
РЕДАКТИРОВАТЬ: пользователь сможет синхронизировать несколько проектов одновременно, хотя сузив набор результатов до одного проекта, это не должно иметь никакого значения для логики.