我的出勤表结构如下,每个值 专栏是来自上半天的出勤率。 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
答案 0 :(得分:1)
我们可以尝试在此处进行更新加入:
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;