sql中的逐行处理

0sgqnhkj  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(853)

我正在使用配置单元sql server。在我的数据库中,我试图删除与上一条记录的间隔少于7天的记录,但在删除记录时,我想用“以前保留的记录”检查间隔,而不是用任何上一条记录。

我想保留所有标记为1的记录,特别是rec#7,尽管第7个记录的间隔小于7,因为前一个记录正在被删除,第7个记录与第5个记录的间隔变为8。

ecfsfe2w

ecfsfe2w1#

可以使用累积最大值:

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);

相关问题