我有一张桌子:
declare @t1 table(Pat_Ref int,regdt datetime)
insert into @t1
values (1,'2015-06-09 21:31:09.253')
,(1,'2015-04-09 21:31:09.253')
,(2,'2015-06-08 21:31:09.253')
,(2,'2015-03-09 21:31:09.253')
,(3,'2014-11-09 21:31:09.253')
,(3,'2015-02-15 21:31:09.253')
,(4,'2015-01-15 21:31:09.253')
Run Code Online (Sandbox Code Playgroud)
我希望最近的regdt日期只有过去6个月的重复记录.
注意:首次重复记录可能超过6个月.
例如
(3, '2014-11-09 21:31:09.253') and
(3,'2015-02-15 21:31:09.253')
Run Code Online (Sandbox Code Playgroud)
这应该被视为重复记录
结果应该是这样的:
Pat_Ref regdt
1 2015-06-09 21:31:09.253
2 2015-06-08 21:31:09.253
3 2015-02-15 21:31:09.253
Run Code Online (Sandbox Code Playgroud)
我试过这个查询:
;with cte
as (
select * from (
select *, ROW_NUMBER() over (partition by Pat_Ref order by regdt asc) Rn
from @t1 where convert(date, regdt)>=DATEADD(MM, -6, convert(date,GETDATE()))
) t2
where t2.Rn>1) …Run Code Online (Sandbox Code Playgroud)