Postgres交替组查询

时间:2015-01-20 02:37:57

标签: sql postgresql

鉴于我有一张桌子:

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
...

1 个答案:

答案 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;