如何通过夜班在多个记录中获得先进先出

我有这个查询,没有很多记录就可以全时间进出并超时,但是我遇到了多个记录,我有一个问题如何删除那些多条记录

with 
cte1 as ( select *,coalesce(lag(verify_state) over (partition by user_id order by verify_date asc),1) prev_state,coalesce(lead(verify_state) over (partition by user_id order by verify_date asc),0) next_state
          from tbl_excel_attendance
),cte2 as ( select *,lead(verify_date) over (partition by user_id order by verify_date asc) next_date
          from cte1 
          where (prev_state,verify_state,next_state) in ( (1,0),(1,1),(0,1,0) )
)
select * 
from cte2 
where verify_state = 0
  and next_date is not null
order by 2,3

例如,请参见此Fiddle。 14的user_id和2019/11/11的出席人数有问题,并且有多个记录。我该如何删除这些倍数并保留先进先出的功能。

Verify_state stands for 0 = Time In and 1 = Time out

预期输出:

user_id     verify_date      verify_state  prev_state next_state next_date
     14     2019-11-07 07:25:00     0          1          0     2019-11-07 20:09:00
     14     2019-11-08 07:18:00     0          1          1     2019-11-08 17:38:00
     14     2019-11-11 07:20:00     0          0          1     2019-11-11 20:05:00
leekikong1986 回答:如何通过夜班在多个记录中获得先进先出

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3119414.html

大家都在问