仅当这些行是连续的时才忽略重复行
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;
如果这个 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;