如何解决添加基于计数器的连续日期
我有一个员工表,上面有员工姓名和该员工请假的日期。我的任务是确定连续休假3或5天的员工。我尝试添加row_number,但是根据连续的日期,它无法正确重新启动。我需要的计数器如下所示。有什么建议吗?
Employee Leave Date Desired Counter
John 25-Jan-20 1
John 26-Jan-20 2
John 27-Jan-20 3
John 28-Jan-20 4
John 15-Mar-20 1
John 16-Mar-20 2
Mary 12-Feb-20 1
Mary 13-Feb-20 2
Mary 20-Apr-20 1
Desired output (same as in text)
解决方法
这是一个缺口和孤岛的问题:孤岛代表连续的叶子天,而您想枚举每个孤岛的行。
这是一种使用日期差与单调递增的计数器建立组的方法:
select t.*,row_number() over(
partition by employee,dateadd(day,-rn,leave_date)
order by leave_date
) counter
from (
select t.*,row_number() over(partition by employee order by leave_date) rn
from mytable t
) t
order by employee,leave_date
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。