每个姓名往前推5天,得出自己目前是第几个,这个查询怎么写
下面这个表每个姓名往前推5天,如何得出自己目前是第几个
TB1
姓名 日期
张三 4/1/2012
李四 4/1/2012
张三 4/3/2012
张三 4/2/2012
张三 4/9/2012
如何得出下面的结果
姓名 日期 号码
张三 4/1/2012 1
李四 4/1/2012 1
张三 4/3/2012 3
张三 4/2/2012 2
张三 4/9/2012 1
------解决方案--------------------
with cte
as
(select t.name,t.日期,flag=case when exists(select 1 from test where datediff(dd,日期,t.日期)<=5 and name=t.name and 日期<>t.日期) then 1 else 0 end
from test t
)
select name,日期,row= row_number () over(partition by name ,flag order by 日期)
from cte