Обновление первой таблицы, столбец которой равен нулю, а значение получено из второй таблицы.Обе таблицы имеют одинаковый первичный ключ - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть таблица посещаемости, структура которой похожа на приведенную ниже, значение каждого столбца берется из посещаемости первой половины дня.TimeIn1 утром перед работой и TimeOut1, когда у сотрудника обеденный перерыв.TimeIn2 при возобновлении работы днем ​​и TimeOut2 при возвращении домой.

Первая половина дня переходит к таблице посещаемости.

AttnDate    EmpIdNo     TimeIn1     TimeOut1    TimeIn2     TimeOut2
2018-09-25  0005905     07:10:00    12:07:00    NULL        NULL
2018-09-25  0010134     07:33:00    12:03:00    NULL        NULL

Вторая половина дня, взятая из новых журналов.

AttnDate    EmpIdNo     TimeIn1     TimeOut1    TimeIn2     TimeOut2
2018-09-25  0005905     NULL        NULL        12:45:00    21:06:00
2018-09-25  0010134     NULL        NULL        12:50:00    20:35:00

Затем я хочу обновить таблицу посещаемости, только если столбец имеет нулевое значение, ниже приведена последняя обновленная таблица посещаемости.

AttnDate    EmpIdNo     TimeIn1     TimeOut1    TimeIn2     TimeOut2
2018-09-25  0005905     07:10:00    12:07:00    12:45:00    21:06:00
2018-09-25  0010134     07:33:00    12:03:00    12:50:00    20:35:00

1 Ответ

0 голосов
/ 27 сентября 2018

Мы можем попробовать присоединиться к обновлению здесь:

UPPDATE a
SET
    TimeIn1 = COALESCE(TimeIn1, b.TimeIn1),
    TimeOut1 = COALESCE(TimeOut1, b.TimeOut1),
    TimeIn2 = COALESCE(TimeIn2, b.TimeIn2),
    TimeOut2 = COALESCE(TimeOut2, b.TimeOut2)
FROM Attendance a
INNER JOIN Logs b
    ON a.AttnDate = b.AttnDate AND a.EmpIdNo = b.EmpIdNo
WHERE
    TimeIn1 IS NULL OR TimeOut1 IS NULL OR TimeIn2 IS NULL OR TimeOut2 IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...