我有一张看起来像这样的表:
ID | ACTION
1 | 'start'
2 | 'stop'
3 | 'start'
4 | 'stop'
5 | 'start'
...| ...
我的问题是,如果开始/停止模式中断(例如两次停止而中间没有开始,反之亦然),我如何用SQL查询检测?
我希望查询显示所有破坏模式的记录。您可以说,当有两个启动/停止操作时,您不能确定应该归咎于两个记录中的哪个,因此我想将两个记录都添加到查询中。
我知道如何使用VBA进行此操作,但是我看不到在查询中使用VBA的方法。
谢谢。
答案 0 :(得分:0)
您希望下一行是相同类型或上一行是相同类型的任何行。
假设ID之间没有空格,则可以使用联接获取所需的信息:
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);
答案 1 :(得分:0)
如果您的ID之间没有空格:
select * from tablename as t
where
action in (select action from tablename where id in (t.id - 1, t.id + 1))