每当cs3Horizontal用于行=同一列但下一行时,我需要提取并返回数据行。例如,在图片中,您看到行85/86的cs3Horizontal = 65,所以返回这些行。
我已经使用OVER,LEAD和LAG查看了许多选项,但说实话,文档并没有为以前从未使用过这些窗口函数的人提供足够的细节。我想我正在寻找合适的解决方案,但我该如何实现呢?
我正在使用PostgreSQL 9.2.9,由Visual C ++ build 1600,64位编译。有问题的表是时间序列数据,因此第一列是主键。
答案 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;