我有这样的情况,我需要计算一个给定的4周时间内员工的总合约小时数。员工可能会在中期更改小时数,因此总合约小时数需要根据小时数的变化进行调整
我的SQL是
declare @start datetime = '2017-06-20'
declare @end datetime = '2017-07-20'
select j.EMPLOY_REF,
j.ACT_HOURS * 4 as ContractedHoursPer4WeekPeriod,
j.ACT_HOURS as ContractedHoursPerWeek,
(j.ACT_HOURS / 7) as ContractedHoursPerDay,
j.COSTCENTRE,
j.FROMDATE,
j.UNTILDATE
from jobholdr j
where EMPLOY_REF ='000033504'
,结果是
如果在2017年6月20日至2017年7月20日这个例子中,那么他们应该每周工作39小时10天,然后每周30小时工作20天。
如果计算出该期间内合同工时的差异,如何计算该期间的总合同工时数。我猜它需要通过分解成几天来完成,但我不知道下一步该去哪里......
答案 0 :(得分:0)
您可以在SELECT中包含以下内容
DATEDIFF(day, CASE WHEN @start > j.fromdate
THEN @start
WHEN @start = j.fromdate
THEN j.fromdate
ELSE DATEADD(day,-1,j.fromdate)
END,
CASE WHEN @end > j.untildate
THEN j.untildate
ELSE @end
END) * (j.act_hours / 7) TotalContractedHours,