данных:SQL Time Tracking Запрос
EmpNumber, TimeStamp, AreaName 10632, 2009-11-23 16:40:33.000, OUT_1 10632, 2009-11-23 16:39:03.000, IN_1 10632, 2009-11-23 16:38:56.000, IN_1 10632, 2009-11-23 15:31:51.000, OUT_1 10632, 2009-11-23 15:31:48.000, IN_1 10632, 2009-11-23 15:31:43.000, IN_1 10632, 2009-11-23 15:31:14.000, OUT_1 10632, 2009-11-23 15:31:08.000, IN_1 10632, 2009-11-23 15:29:18.000, OUT_1 10632, 2009-11-23 15:28:29.000, IN_1 10632, 2009-11-23 15:27:35.000, OUT_1 10632, 2009-11-23 15:26:35.000, IN_1 10632, 2009-11-23 15:22:55.000, IN_1
Вот запрос я в настоящее время использую.
SELECT [EmpNumber], [TimeStamp], [AreaName],
DATEDIFF(second, [TimeStamp], (SELECT TOP 1 [TimeStamp]
FROM [EventTable] EV2
WHERE EV2.[TimeStamp] > EV1.[TimeStamp]
AND AreaName = 'OUT_1'
AND EV2.[EmpNumber] = EV1.[EmpNumber])
)/60.00 DurationMins
FROM [EventTable] EV1
WHERE AreaName = 'IN_1'
ORDER BY [TimeStamp] DESC
Проблема заключается в нескольких вводах IN_1
. Я хотел бы просто отслеживать разницу во времени между первой записью IN_1
и следующей записью OUT_1
и игнорировать запись IN_1
. Конечно, вы могли бы иметь 100 IN_1
, но время отслеживается только с первых IN_1
до следующего OUT_1
.
усложнять дальше могло быть IN_1
, IN_2
, IN_3
, OUT_1
, OUT_2
, OUT_3
и вы можете ввести IN_1
и оставьте OUT_3
и и он будет работать так же, как это было IN_1
, OUT_1
.
Я не следую за «усложнить ситуацию». Также, каков ваш вопрос? –
Я не совсем понимаю, что вы хотите сделать, но я ожидаю (если вы используете tsql 2005+), вам нужно использовать рекурсивный CTE или цикл. – Hogan
Это отслеживание времени при управлении доступом. Кто-то может дважды щелкнуть карту на считывателе IN_1. Проблема в том, что когда я запускаю запрос выше, я получаю два разных DurationMins с использованием Первого и Второго салфетки. Таким образом, вместо того, чтобы сообщать, что кто-то был в течение 1.616 минут, они заняты 1.616 и 1.5 (используя пример выше). Таким образом, чтобы усложнить разглагольствование, это просто показывает, что они могут войти в одну из 3 входных дверей и выйти из любой двери, которую они выбирают. Это не должно быть большой проблемой, но все, что мне нужно, также должно быть в состоянии правильно работать в этой ситуации. – Nick