P粉2310799762023-08-19 07:58:16
Using LAG()
analysis function, we can try:
WITH cte AS ( SELECT e.name, e.full_name, LAG(a.attendance_date) OVER (PARTITION BY a.employee ORDER BY a.attendance_date) AS lag_attendance_date FROM tabAttendance a INNER JOIN tabEmployee e ON e.name = a.employee ) SELECT DISTINCT name, full_name FROM cte WHERE DATEDIFF(attendance_date, lag_attendance_date) > 11;
The basic strategy here is to generate the lag (previous consecutive value) of the attendance date in the CTE. We then report only employees with a gap of 11 days or longer.