ここに私が持っているものがあります:
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 日間続けて無断であった場合でも、それは 1 回の発生です。
これは、従業員が MF シフトを持っていて、金曜日と月曜日に電話をかけた場合、それは 1 回だけであることが指摘されるまで、完全に機能しています。事態をさらに難しくするために、従業員は非常に大幅にシフトします (MF、火-土、日-月、M-火 & 金-土など) ... そのため、すべての異なるシフトを保持するテーブルを作成しました (約そのうちの 8 つ) には 9 つの列があります。
ID - ShiftName - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday
ShiftName は、短い説明 (Mon-Fri、Tue-Fri、Sun-Thu など) を含むテキスト フィールドであり、曜日の Yes/No フィールドがあります。そして、チェックマークが予定日です。
だから私は2つのことについて皆さんの意見をお待ちしております.
- これは、キャプチャする必要があるものをキャプチャする「良い」方法ですか?
- 週末をラップするが 1 回の発生としてカウントされる無断欠勤を考慮して、その SQL ステートメントをどのように変更して発生回数を正しくするのでしょうか?