Dav*_*ard 6 sql sql-server sum case case-when
我有一个SQL Server表,其中包含所有员工及其疾病的列表.
我需要能够计算他们在本季度患病的天数
问题是,有些人可能已经生病了一年,所以EG可以是2013-12-31,而UNTILDATE可能是2014-12-31(1年病假).但是,它应该只计算当前季度发生的疾病的天数.所以它应该是大约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'
Run Code Online (Sandbox Code Playgroud)
因此,目前,从任何一个正确的日期开始,我需要考虑那些在季度开始之前已经生病但仍然生病进入当前季度的人,但应该只计算从季度开始的天数.本季度末.
任何帮助将不胜感激.
SELECT SUM(a.WORKDAYS) as Total
FROM ABSENCE a
WHERE (a.FROMDATE >= DATEADD(MONTH, -3, GETDATE()) OR a.UNTILDATE >= DATEADD(MONTH, -3, GETDATE()))
AND a.ABS_REASON = 'SICK'
Run Code Online (Sandbox Code Playgroud)
具体季度
SELECT SUM(a.WORKDAYS) as Total
FROM ABSENCE a
WHERE (a.FROMDATE >= DATEADD(quarter, -1, GETDATE()) OR a.UNTILDATE >= DATEADD(quarter, -1, GETDATE()))
AND a.ABS_REASON = 'SICK'
Run Code Online (Sandbox Code Playgroud)