Игнорируйте повторяющиеся строки только в том случае, если эти строки являются смежными

#sql #hana

Вопрос:

Я пытаюсь показать только первое появление действия, если это действие происходит несколько раз подряд.

Таким образом, в приведенном ниже сценарии, если действие B происходит 3 раза подряд, даже если это происходит в разное время, я хочу выбрать только первое событие. Если это произойдет снова ПОСЛЕ другого действия, я также хочу сохранить это.

Я хочу игнорировать строки 3 и 4

ряд КЕЙСИ Активность ВРЕМЯ ПРОВЕДЕНИЯ МЕРОПРИЯТИЯ
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

Ответ №1:

Воспользуйся 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;