我想计算该财政年度(2017年7月1日至2018年6月30日)员工休假的天数。
有些员工在这几天以外请假,例如,某位员工的请假申请开始日期为30/06/2017到2017/7/07,即2天,但是我会只需捕获2017年7月的1天。
我只是想成为这里的100%,所以这是我下面的查询
Select * from leave where leave_start < '2018-07-01' and leave_end > '2017-06-30'
表是
Staffno | leave_type | leave_start | leave_end | days_taken
0001 | AnnualLeave| 30/06/2017 | 03/07/2018 | 2
很明显,一旦获得结果,我将需要计算出实际的开始日期和实际的结束日期,然后在excel中为它做一个networkdays公式。
谢谢,非常感谢您的帮助:)
答案 0 :(得分:0)
如果开始日期和结束日期超出间隔,请使用CASE
语句替换边界日期。在您的示例中,您没有将开始日期和结束日期算作休假,因此,如果您在查询中需要此日期(此处将开始日期和结束日期算作休假),只需在period_days_taken
定义中添加“ -2”:< / p>
Select leave.*,
DATEDIFF(DAY,
CASE WHEN leave_start<'2017-06-30'
THEN '2017-06-30'
ELSE leave_start END,
CASE WHEN leave_end>'2018-07-01'
THEN '2018-07-01'
ELSE leave_end END)
AS period_days_taken
from leave
WHERE leave_start <= '2018-07-01'
AND leave_end >= '2017-06-30'