我有以下数据sql - 如何比较同一表列中的值,如果相等则返回-LMLPHP
每当cs3Horizontal for a row=same column but next row时,我需要提取并返回数据行。例如,在图片中,您看到第85/86行的cs3Horizontal=65,因此返回这些行。
我已经研究了许多使用OVER、LEAD和LAG的选项,但老实说,文档没有为以前从未使用过这些窗口函数的人提供足够的细节。我想我正在寻找正确的解决方案,但我该如何实施呢?
我使用PostgreSQL 92.9,用Visual C++编译生成1600, 64位。所讨论的表是时间序列数据,因此,第一列是主键。

最佳答案

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;

09-15 22:16