1. 先整理出 工號 (Code )& 出勤日 (DT)
2. SQL 分三段
a. 先抓出每個工號連續上班的記錄
b. 抓出每次連續上班的天數
c. 篩選上班連續八天者 ( 法律規定 上班七天一定要休假一天 )
with t
as(
select
px=DATEADD(DD,-ROW_NUMBER()over(partition by Code
order by DT asc),DT),
Code,DT
from Login_V
),
m as(
select Code,MIN(DT) as StartTime,MAX(DT) as EndTime
from t
group by px,Code
)
select Code,DATEDIFF(DD,StartTime,EndTime)+1 as Days
from m
where DATEDIFF(DD,StartTime,EndTime)>=8