鉴于我有一张桌子:
MY_TABLE
id INT
bool BOOLEAN
还有一些数据:
1, true
2, true
3, false
4, true
5, true
6, false
7, false
8, false
9, true
...
我如何SELECT
这样我才能找到当前行的id和上一行id之间的bool
值发生变化的行?
在这种情况下,我希望结果如下:
1, true
3, false
4, true
6, false
9, true
...
答案 0 :(得分:2)
您可以使用lag()
:
select t.*
from (select t.*, lag(bool) over (order by id) as prev_bool
from mytable t
) t
where t.bool <> prev_bool;