如何找到两个字段值为x且第二行为x + 1的行

时间:2015-05-13 17:13:02

标签: sql teradata

我有一份记录清单(交易)。

我希望能够仅包含交易号具有连续值+1的行。甚至不知道从哪里开始让它只列出那些交易。我让它按顺序列出所有事务,但不仅仅隔离事务值,加上它们的+ 1事务。 (请注意,并非所有交易值都是连续的。)

例如,

如果字段A的值为1,2,4,7,8,10 我希望脚本只列出1,2,7,8作为结果。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您想要至少有两个连续值的组吗?

SELECT * FROM tab
QUALIFY 
   MIN(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) = a - 1
OR MIN(a) OVER (ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) = a + 1

答案 1 :(得分:0)

你可以尝试这样的事情:

select * from table as t1
where exists (
    select * from table as t2
    where t2.A = t1.A-1 or t2.A = t1.A+1
)
order by t1.A