我已经阅读了很多类似的问题,但我的特殊情况比我发现的大多数其他情况更简单但更复杂。这是问题:
我有一个带有日期/时间戳的劳动力交易表,供用户打卡和打卡。每个事务(行)都有一个用户名、开始和停止时间、总小时数和一个“标签”(通常是工单#)。
对于假期,我们为每个用户添加一个没有开始或停止时间的事务,总小时数为 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 days 之前的 2 个工作日工作,则该用户仅应获得 8 小时的假期。休假日(带有 VACATION 标签)将被视为“工作”。因此,基本上,如果前 2 天的每一天都有任何劳务交易,他们就有资格享受假期。
更复杂的是,周一到周五将是一个典型的工作周,但是,人们可以在周六工作(尽管不是必需的),所以如果周一放假,他们可以在周四/周五或周五/周六工作有资格享受假期。
该报告将每周(周一)运行一次,并查看前一周。所以我的思考过程是你寻找任何带有假日标签的交易,然后在 2 个“工作日”前检查每天的任何交易。如果一天或两天没有找到交易,则返回用户或完整的假期行,以表明他们不符合条件(最终结果集应该是不符合假期条件的交易或用户的列表)。
对于检查前 2 天或确定“工作日”(可能包括星期六)的任何和所有帮助将不胜感激!如果您需要任何进一步的细节,也请告诉我。
谢谢!