Как запросить записи, которые не соответствуют ожидаемому шаблону с SQL - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть таблица, которая может выглядеть следующим образом:

ID | ACTION
1  | 'start'
2  | 'stop'
3  | 'start'
4  | 'stop'
5  | 'start'
...| ...

У меня вопрос, как я могу определить с помощью запроса SQL, если шаблон запуска / остановки прерывается, например, две остановки без запуска вмежду и наоборот?

Я хочу, чтобы запрос показывал все записи, которые нарушают шаблон.Вы могли бы сказать, что когда есть два действия запуска / остановки, вы не можете быть уверены, какая из двух записей виновата, поэтому я хотел бы добавить обе записи в запрос.

Я знаю, как это сделать.это с VBA, но я не вижу способа использовать VBA с запросом.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Если у вас нет пропусков в ваших идентификаторах:

select * from tablename as t
where 
  action in (select action from tablename where id in (t.id - 1, t.id + 1))
0 голосов
/ 15 февраля 2019

Требуется любая строка, в которой следующая строка того же типа или предыдущая строка того же типа.

Если в идентификаторах нет пробелов, вы можете получить необходимую информацию, используя объединения:

select t.*
from (t as t left join
      t as tnext
      on tnext.id = t.id + 1
     ) left join
     t as tprev
     on tprev.id = t.id - 1
where t.action in (tprev.action, tnext.action);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...