我有一个SQL Server表,其中包含所有工作人员及其病情的列表。

我需要能够计算出他们在当前季度患病了多少天

问题是,有些人可能已经病了一年,因此,例如FROMDATE可能是2013-12-31,而UNTILDATE可能是2014-12-31(一年病假)。但是,它只应计算当前季度发生这种疾病的天数。因此,应该是大约90天的疾病,而不是整个一年。

当前的SQL

select SUM(a.WORKDAYS) as Total
from ABSENCE a
where a.FROMDATE < GETDATE() and

a.UNTILDATE > DATEADD(MONTH, -3, GETDATE())
and
a.ABS_REASON='SICK'

因此,目前,从正确的任何日期开始计算,因为我需要计算该季度开始之前已经生病但到当前季度仍然生病的人,但应该只计算从该季度开始到现在的天数本季度末。

任何帮助将不胜感激。

最佳答案

使用日期表,您可以轻松地找到日期计数,其中该日期介于两个感兴趣的日期之间,并且周围有休假期。您还可以过滤日期,以排除非工作日和公共(public)假期。

有很多方法可以生成这样的日期表,并且在stackoverflow和dba.stackexchange上都有很多描述。

关于SQL病假天数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27502676/

10-16 06:49