这是我所拥有的:
SELECT Count(*) AS cnt
FROM tblOccurrence AS x
WHERE (((x.OccurrenceDate) Between DateAdd('m',-6,Date()) And Date())
AND ((Exists ( SELECT *
FROM tblOccurrence AS y
WHERE y.TechID = x.TechID AND DATEADD ('d', -1, x.[OccurrenceDate]) = y.[OccurrenceDate]))=False)
AND ((x.TechID)= " & Me.tbxTechID.Text & "))
GROUP BY x.TechID;
这用于计算员工缺勤的“发生”,如果员工无故缺勤 1 天,则为 1 次。如果他们连续 5 天没有理由,这仍然是一次。
直到有人指出,如果员工有 MF 轮班并在周五和周一打电话,这只会发生 1 次。为了让事情变得更加艰难,我们的员工轮班非常大(MF,周二至周六,周日至周一,M-周二和周五至周六等)......所以我建立了一张桌子,可以容纳所有不同的班次(大约其中 8 个)有 9 列:
ID - ShiftName - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday
ShiftName 是一个带有简短描述的文本字段(Mon-Fri、Tue-Fri、Sun-Thu 等),然后是一周中的几天的 Yes/No 字段。然后复选标记是预定的日期。
所以我希望每个人都对两件事提出意见,
- 这是捕捉我需要捕捉的东西的“好”方式吗?
- 考虑到周末无故缺勤但计为 1 次,该 SQL 语句将如何更改以使出现次数正确?