每当 cs3Horizontal 行 = 同一列但下一行时,我需要提取并返回数据行。例如,在图片中,您看到第 85/86 行的 cs3Horizontal = 65,因此返回这些行。
我已经研究过许多使用 OVER、LEAD 和 LAG 的选项,但老实说,文档只是没有为以前从未使用过这些窗口函数的人提供足够的详细信息。我认为我正在寻找正确的解决方案,但我该如何实现呢?
我使用的是 PostgreSQL 9.2.9,由 Visual C++ build 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;
关于sql - 如何比较同一表列中的值并在相等时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623848/