【发布时间】:2017-08-17 11:15:19
【问题描述】:
当我需要计算员工在给定 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 日,那么他们应该有 10 天,每周 39 小时,然后是 20 天,每周 30 小时。
如何计算该时间段内的合同总小时数,以得出一个结果,因为该期间内合同工时的差异。我猜它需要通过将其分解为几天来完成,但我不确定下一步该去哪里......
【问题讨论】:
-
编辑您的问题并显示用于生成结果的数据。
-
我在您的查询中没有看到
@start和@end -
"我猜这需要通过将其分解为数天来完成" 。好主意。您需要一个整数计数表来枚举
@start和@end之间的天数,并将这一天加入到包含当天每周排列的适当行中。 -
我的问题确实显示了用于生成显示结果的查询。你还想让我展示什么?
-
我还没有使用“@start”或“@end”,因为我需要帮助将它们构建到我的示例中的查询中
标签: sql sql-server sql-server-2008