比如我有一组数据,上下行时间只要差超过7天,就重新排序
张三 2012/1/1
张三 2012/1/2
张三 2012/1/4
张三 2012/1/6
张三 2012/1/7
张三 2012/1/13
张三 2012/1/21
张三 2012/1/22
张三 2012/2/1
张三 2012/2/2
张三 2012/2/3
王五 2012/1/3
王五 2012/1/5
李四 2012/1/2
得出的结果是
张三 2012/1/1 1
张三 2012/1/2 2
张三 2012/1/4 3
张三 2012/1/6 4
张三 2012/1/7 5
张三 2012/1/13 6
张三 2012/1/21 1
张三 2012/1/22 2
张三 2012/2/1 1
张三 2012/2/2 2
张三 2012/2/3 3
王五 2012/1/3 1
王五 2012/1/5 2
李四 2012/1/2 1
请问怎么实现
张三 2012/1/1
张三 2012/1/2
张三 2012/1/4
张三 2012/1/6
张三 2012/1/7
张三 2012/1/13
张三 2012/1/21
张三 2012/1/22
张三 2012/2/1
张三 2012/2/2
张三 2012/2/3
王五 2012/1/3
王五 2012/1/5
李四 2012/1/2
得出的结果是
张三 2012/1/1 1
张三 2012/1/2 2
张三 2012/1/4 3
张三 2012/1/6 4
张三 2012/1/7 5
张三 2012/1/13 6
张三 2012/1/21 1
张三 2012/1/22 2
张三 2012/2/1 1
张三 2012/2/2 2
张三 2012/2/3 3
王五 2012/1/3 1
王五 2012/1/5 2
李四 2012/1/2 1
请问怎么实现
insert into tb select '张三','2012/1/1'
insert into tb select '张三','2012/1/2'
insert into tb select '张三','2012/1/4'
insert into tb select '张三','2012/1/6'
insert into tb select '张三','2012/1/7'
insert into tb select '张三','2012/1/13'
insert into tb select '张三','2012/1/21'
insert into tb select '张三','2012/1/22'
insert into tb select '张三','2012/2/1'
insert into tb select '张三','2012/2/2'
insert into tb select '张三','2012/2/3'
insert into tb select '王五','2012/1/3'
insert into tb select '王五','2012/1/5'
insert into tb select '李四','2012/1/2'
go
select *,row_number()over(partition by n,(datediff(d,'2012-01-01',dt)-1)/7 order by dt)rn from tb order by n,dt
/*
n dt rn
---------- ----------------------- --------------------
李四 2012-01-02 00:00:00.000 1
王五 2012-01-03 00:00:00.000 1
王五 2012-01-05 00:00:00.000 2
张三 2012-01-01 00:00:00.000 1
张三 2012-01-02 00:00:00.000 2
张三 2012-01-04 00:00:00.000 3
张三 2012-01-06 00:00:00.000 4
张三 2012-01-07 00:00:00.000 5
张三 2012-01-13 00:00:00.000 1
张三 2012-01-21 00:00:00.000 1
张三 2012-01-22 00:00:00.000 2
张三 2012-02-01 00:00:00.000 1
张三 2012-02-02 00:00:00.000 2
张三 2012-02-03 00:00:00.000 3(14 行受影响)*/
go
drop table tb