我有考勤表,其结构如下所示,每个的值 专栏来自上半天的出席情况。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;