У меня есть таблица, в которой хранится регистрация сотрудников и проверка сотрудников. Теперь данные хранятся в 2 разных столбцах и в 2 строках, как показано ниже. Если сотрудник регистрируется на 2019-09-01 21:30:00
и выдает на 2019-09-02 08:45:00
, это показывает, что общее количество часов рассчитывается в отрицательном выражении.
Вот данные:
DROP TABLE TestAtte;
CREATE TABLE TestAtte(
ID INT,
TimeIn DATETIME,
TimeOut DATETIME
);
INSERT INTO TestAtte VALUES(1, '2019-09-01 21:30:00', NULL);
INSERT INTO TestAtte VALUES(2, NULL, '2019-09-02 08:48:00');
INSERT INTO TestAtte VALUES(3, '2019-09-03 17:16:00', NULL);
INSERT INTO TestAtte VALUES(4, NULL, '2019-09-04 09:14:00');
Мой запрос выглядит примерно так
SELECT MIN(TimeIn) Checkin, MAX(Timeout) CheckOut
FROM dbo.TestAtte
GROUP BY CAST(COALESCE(TimeIn, Timeout) AS DATE)
Данные должны быть примерно такими:
TimeIn TimeOut
2019-09-01 21:30:00.000 2019-09-02 08:48:00.000
2019-09-03 17:16:00.000 2019-09-04 09:14:00.000