小编典典

计算SQL中的连续缺勤

sql

我需要计算在SQL的日期范围内具有X个连续缺勤数量的所有员工。

我们有一个缺勤表,每天有1条记录,缺勤的员工每天,有一个日历表,有一年的工作日。

tblAbsences
EmployeeID int
AbsenceDate datetime

tblCalendar
WorkDay datetime

有谁知道如何计算连续缺勤吗?示例:在2009年1月1日至2009年3月1日之间连续3次缺勤的​​所有员工。


阅读 214

收藏
2021-03-17

共1个答案

小编典典

这应该为您工作。在ConsecDates上按GROUP BY查找谁缺席超过X次。

select a.*, 
        (
            select min(b.absenceDate) from tblAbsences b where a.employeeId = b.employeeId 
            and b.absenceDate >= a.absenceDate
            and not exists ( 
                select 1 from tblabsences c where c.employeeId = b.employeeId and dateadd( dd, 1, b.absenceDate) = c.absenceDate  
            )
) ConsecDates
from dbo.tblAbsences a
order by a.AbsenceDate asc
2021-03-17