SQL - после сортировки возвращать только столбцы с определенными последовательными значениями в столбце - PullRequest
0 голосов
/ 30 октября 2018

У меня есть столбцы name, timestamp, doing. Я уже отсортировал по name, затем по timestamp, и я ожидаю, что перемещение вниз по столбцу doing в группе с таким же name выглядит как A, A, A, B, B, A, A, ... - чередующиеся серии A и B. Мне нужно получить только те строки, которые составляют первую B строку после перехода с A на B внутри группы с таким же именем .

name timestamp doing
1    1         A
1    2         A
1    3         B
1    4         B
1    5         A
2    2         B
2    4         A
2    6         B
2    8         A

Я бы хотел вернуться

name timestamp doing
1    3         B
2    6         B

Но не

2    2         B

потому что это не переход от A к B в пределах name = 2

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, вы просто хотите lag():

select t.*
from (select t.*,
             lag(doing) over (partition by name order by timestamp) as prev_doing
      from t
     ) t
where prev_doing = 'A' and doing = 'B';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...