Возможное решение - это следующее утверждение, но важный вопрос заключается в том, как решить, когда InOutDateTime
равно In
или Out
для одного EmployeeNumber
ввода:
Таблица:
CREATE TABLE Data (
Id int,
EmployeeNumber int,
InOutDateTime datetime
)
INSERT INTO Data (Id, EmployeeNumber, InOutDateTime)
VALUES
(1, 505, '2020-03-24T08:32:42'),
(2, 506, '2020-03-24T08:35:47'),
(3, 507, '2020-03-24T08:46:12'),
(4, 505, '2020-03-24T16:59:00'),
(5, 506, '2020-03-24T17:05:00'),
(6, 508, '2020-03-24T17:46:12')
Заявление:
SELECT
EmployeeNumber,
MIN(CASE WHEN DATEPART(hour, InOutDateTime) <= 12 THEN InOutDateTime END) AS InDateTime,
MAX(CASE WHEN DATEPART(hour, InOutDateTime) > 12 THEN InOutDateTime END) AS OutDateTime
FROM Data
GROUP BY EmployeeNumber, CONVERT(date, InOutDateTime)
ORDER BY EmployeeNumber, CONVERT(date, InOutDateTime)
Результат:
EmployeeNumber InDateTime OutDateTime
505 2020-03-24 08:32:42.000 2020-03-24 16:59:00.000
506 2020-03-24 08:35:47.000 2020-03-24 17:05:00.000
507 2020-03-24 08:46:12.000
508 2020-03-24 17:46:12.000