我需要计算在SQL的日期范围内具有X个连续缺勤数量的所有员工。
我们有一个缺勤表,每天有1条记录,缺勤的员工每天,有一个日历表,有一年的工作日。
tblAbsences EmployeeID int AbsenceDate datetime tblCalendar WorkDay datetime
有谁知道如何计算连续缺勤吗?示例:在2009年1月1日至2009年3月1日之间连续3次缺勤的所有员工。
这应该为您工作。在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