仅当这些行是连续的时才忽略重复行

Disregard duplicate rows only when these rows are contiguous

如果这个 activity 连续多次出现,我试图只显示第一次出现的 activity。

因此,在下面的场景中,如果 activity B 连续出现 3 次,即使是在不同的时间,我只想 select 第一次出现.如果它在另一个 activity 之后再次发生,我也想保留它。

我想忽略第 3 行和第 4 行

ROW CASEKEY ACTIVITY EVENTTIME
1 1 A 01.01.2021 12:00:00
2 1 B 01.01.2021 12:05:00
3 1 B 01.01.2021 12:06:00
4 1 B 02.01.2021 13:00:00
5 1 C 02.01.2021 13:10:00
6 1 B 03.01.2021 12:00:00

使用lag():

select t.*
from (select t.*,
             lag(activity) over (partition by casekey order by eventtime) as prev_activity
      from t
     ) t
where prev_activity is null or prev_activity <> activity;