私は多くの同様の質問を読みましたが、私の特定のケースは、私が見つけた他のほとんどの状況よりも少し単純でありながら複雑です. 質問は次のとおりです。
ユーザーの出勤と退勤の日付/時刻スタンプを含む労働トランザクションのテーブルがあります。各トランザクション (行) には、ユーザー名、開始時間と終了時間、合計時間数、および "タグ" (通常は作業指示書番号) があります。
休日の場合、開始時間と終了時間のないトランザクションを各ユーザーに追加します。合計時間数は 8、タグは「HOLIDAY」です。以下の表のサンプルを作成しました。
USER | STARTDATE | STARTTIME | STOPDATE | STOPTIME | HOURS | TAG
JSMITH | 7/2/12 | 9:00AM | 7/2/12 | 5:00PM | 8 | WO12345
JSMITH | 7/3/12 | 9:00AM | 7/3/12 | 5:00PM | 8 | WO13579
JSMITH | 7/4/12 | NULL | 7/4/12 | NULL | 8 | HOLIDAY
JSMITH | 7/5/12 | 9:00AM | 7/5/12 | 5:00PM | 8 | WO24680
JSMITH | 7/6/12 | 9:00AM | 7/6/12 | 5:00PM | 8 | WO98765
これが問題です。ユーザーは、キーワードが BUSINESS 日である 2 営業日前に働いた場合にのみ、8 時間の休暇を取得することになっています。休暇日 (VACATION のタグが付いている) は、「勤務中」と見なされます。したがって、基本的に、2日前のそれぞれに労働取引があれば、休暇の資格があります。
さらに複雑なことに、月曜日から金曜日までが典型的な週の労働時間ですが、人々は土曜日に働くことができます (ただし必須ではありません)。したがって、休日が月曜日に当たる場合、彼らは木/金または金/土のいずれかで働くことができます。休日の資格を得るため。
このレポートは週に 1 回 (月曜日に) 実行され、前の週を参照します。したがって、私の思考プロセスは、Holiday のタグが付いた取引を探し、毎日の取引について 2 "営業" 日前に確認することです。1 日または両方の日にトランザクションが見つからない場合は、ユーザーまたは完全な休日の行を返して、資格がないことを示します (最終的な結果セットは、休日の資格がないトランザクションまたはユーザーのリストである必要があります)。
前の 2 日間を確認するか、「営業」日 (土曜日を含む可能性がある) を決定するためのすべての助けをいただければ幸いです。また、詳細が必要な場合はお知らせください。
ありがとう!