如何比较同一表列中的值,如果相等则返回

时间:2017-04-26 02:10:46

标签: sql postgresql

我有以下数据SQL Example

每当cs3Horizo​​ntal用于行=同一列但下一行时,我需要提取并返回数据行。例如,在图片中,您看到行85/86的cs3Horizo​​ntal = 65,所以返回这些行。

我已经使用OVER,LEAD和LAG查看了许多选项,但说实话,文档并没有为以前从未使用过这些窗口函数的人提供足够的细节。我想我正在寻找合适的解决方案,但我该如何实现呢?

我正在使用PostgreSQL 9.2.9,由Visual C ++ build 1600,64位编译。有问题的表是时间序列数据,因此第一列是主键。

1 个答案:

答案 0 :(得分:1)

LEAD()LAG()是解决方案。如果你想要两行:

select t.*
from (select t.*,
             lag(cs3Horizontal) over (order by cs3time) as prev_cs3Horizontal,
             lead(cs3Horizontal) over (order by cs3time) as next_cs3Horizontal
      from t
     ) t
where prev_cs3Horizontal = cs3Horizontal or
      next_cs3Horizontal = cs3Horizontal;