您可以使用累计最大值:
select t.* from (select t.*, max(case when retained = 1 then intdate end) over (order by intdate rows between unbounded preceding and 1 preceding) as prev_intdate from t ) t where prev_intdate is null or prev_intdate > dateadd(intdate, 7);