当前位置: 代码迷 >> Sql Server >> 每个姓名往前推5天,得出自己目前是第几个,这个查询如何写
  详细解决方案

每个姓名往前推5天,得出自己目前是第几个,这个查询如何写

热度:25   发布时间:2016-04-27 13:27:04.0
每个姓名往前推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
  相关解决方案