SQL Server - 月份总小时数

时间:2017-08-17 11:15:19

标签: sql sql-server sql-server-2008

我有这样的情况,我需要计算一个给定的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'

,结果是

enter image description here

如果在2017年6月20日至2017年7月20日这个例子中,那么他们应该每周工作39小时10天,然后每周30小时工作20天。

如果计算出该期间内合同工时的差异,如何计算该期间的总合同工时数。我猜它需要通过分解成几天来完成,但我不知道下一步该去哪里......

1 个答案:

答案 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,