更新第一个表,该表的列为 null,并且值来自第二个表.两个表具有相同的主键



我有考勤表,其结构如下所示,每个的值 专栏来自上半天的出席情况。TimeIn1 在早上工作前,超时 1 在员工午休时。 下午恢复工作时的 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

我们可以尝试在这里进行更新加入:

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;

相关内容

最新更新