Pro Rata Calc-月中更改

时间:2019-07-11 20:39:52

标签: sql

我的公司有一个奇怪的方法来计算中期变化的按比例计算,我希望能够自动执行此操作。

计算的第一部分使用21.75减去第二计算中的工作日数,而不是整个计算的工作日,计算的第二部分使用工作日,感到困惑吗?我也是!

创建两个表,一个用于第一个更改,一个用于所有后续更改,然后根据逻辑进行更新,我相信我可以在当前月份或指定月份中指定日期的特定月份正常工作,但是我需要能够连续运行几个月,并希望专家可以提供帮助。

select aa.resource_id, aa.post_id, aa.pro_rata_date, aa.pro_rata_date_to, count(b.trans_date) as working_days, 21.75-count(b.trans_date) as pro_rata_days, row_number() over (partition by aa.resource_id ORDER BY aa.resource_id) as id
from
(select distinct a.resource_id, a.post_id, case when a.date_from > DATEADD(MONTH, -1, DATEADD(DAY, 1, EOMONTH(GETDATE()))) then a.date_from else DATEADD(MONTH, -1, DATEADD(DAY, 1, EOMONTH(GETDATE()))) end as pro_rata_date,  case when a.date_to < EOMONTH(getdate()) then a.date_to else EOMONTH(getdate()) end as pro_rata_date_to
from aprresourcepost a
where resource_id IN (select resource_id from aprresourcepost where date_from BETWEEN DATEADD(MONTH, -1, DATEADD(DAY, 1, EOMONTH(GETDATE()))) and EOMONTH(getdate()))
group by a.resource_id, a.post_id, a.date_from, a.date_to)aa
inner join ahsresschedule b  on aa.resource_id = b.resource_id and aa.post_id = b.post_id and b.trans_date between aa.pro_rata_date and aa.pro_rata_date_to
where b.hrs <>0
group by aa.resource_id, aa.post_id, aa.pro_rata_date, aa.pro_rata_date_to

示例; 7月有23个工作日,如果我从7月11日起将角色从角色A转移到角色B,则按比例计算;

角色A-6.75(21.75-角色B起的工作日数) 角色B-15(工作日)

7月29日将是

角色A-18.75(21.75-角色B起的工作日数) 角色B-3(工作天数)。

0 个答案:

没有答案