У меня есть таблица, в которой хранится информация о посещаемости сотрудника, и другая таблица, в которой хранится информация о смене сотрудника, которая в основном является дежурным списком.
Вот структура таблицы посещаемости
CREATE TABLE Attendance
(
ID INT,
EmpCode INT,
ShiftCode INT,
CheckIn DATETIME,
CheckOut DATETIME
)
INSERT INTO Attendance VALUES (1, 1, 1, '2019-09-01 09:16:23', NULL)
INSERT INTO Attendance VALUES (2, 1, 1, NULL, '2019-09-01 18:01:56')
INSERT INTO Attendance VALUES (3, 1, 2, '2019-09-02 09:00:00', NULL)
INSERT INTO Attendance VALUES (4, 1, 2, NULL, '2019-09-02 18:48:21')
INSERT INTO Attendance VALUES (5, 1, 1, '2019-09-13 09:27:00', NULL)
INSERT INTO Attendance VALUES (6, 1, 1, NULL, '2019-09-13 18:45:00')
INSERT INTO Attendance VALUES (7, 2, 2, '2019-09-01 21:19:17', NULL)
INSERT INTO Attendance VALUES (8, 2, 2, NULL, '2019-09-01 23:30:56')
INSERT INTO Attendance VALUES (9, 2, 2, '2019-09-05 09:23:00', NULL)
INSERT INTO Attendance VALUES (10, 2, 2, NULL, '2019-09-05 17:19:00')
Вот структура и примерные данные для дежурного списка.
CREATE TABLE Shifts
(
ID INT PRIMARY KEY,
EmpCode INT,
ShiftCode INT,
StartDate DATETIME,
EndDate DATETIME
)
INSERT INTO Shifts VALUES (1, 1, 24, '2019-09-01 00:00:00', '2019-09-05 00:00:00');
INSERT INTO Shifts VALUES (2, 2, 25, '2019-09-01 00:00:00', '2019-09-05 00:00:00');
Идея состоит в том, чтобы обновить ShiftCode в таблице посещаемости по отношению к сменам, хранящимся в дежурном списке. Таким образом, если посещаемость для сотрудника 1
находится между '2019-09-01'
и '2019-09-05'
, то код смены для этого сотрудника должен быть обновлен до 24
и такой же для другого сотрудника. Если дежурный список не существует для дат, присутствующих в таблице посещаемости, он не должен обновлять его и оставлять так, как есть. Мне нужен запрос на обновление.