Я пишу простую программу отслеживания времени для управления собственными проектами. Я большой поклонник хранения кода отчетности в базе данных, поэтому я пытался создать несколько 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". Я также сократил столбцы User, Project и Description для краткости.
Мне нужно создать в чистом SQL, результирующий набор, как:
Description | Total Time
Для каждого ClockIn/ClockOut пары.
Я полагаю, что это на самом деле будет довольно просто, я просто не совсем уверен, к какому пути это подходит.
EDIT: Пользователь может одновременно выполнять одновременное выполнение нескольких проектов, хотя сначала сужая результирующий набор до одного проекта, это не должно иметь никакого значения для логики здесь.
То, что вы хотите, называется операцией временного соединения. – kasperjj 2008-11-09 03:25:43
Можете ли вы уточнить или связать некоторую информацию? – FlySwat 2008-11-09 03:28:58