添加基于连续日期的计数器
Add a counter based consecutive dates
我有一名员工 table,有员工姓名和员工休假的日期。我的任务是确定连续休假 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
我有一名员工 table,有员工姓名和员工休假的日期。我的任务是确定连续休假 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