比较Teradata不同列中的行

比较Teradata不同列中的行,teradata,Teradata,我需要将1列中的值与2列中以前的值进行比较。例如,我有一个表: id |创建|结束|日期 1 | 2016-12-31 | 2017-01-25 2 | 2017-01-26 | 2017-05-21 3 | 2017-05-22 | 2017-08-26 4 | 2017-09-01 | 2017-09-02 我需要比较id=2的创建日期和id=1的结束日期 并将id=3的创建日期与id=2的结束日期进行比较,以此类推 结果:显示具有创建日期(id=n)结束日期(id=n-1)+间隔“1

我需要将1列中的值与2列中以前的值进行比较。例如,我有一个表:

id |创建|结束|日期
1 | 2016-12-31  | 2017-01-25
2 | 2017-01-26  | 2017-05-21
3 | 2017-05-22  | 2017-08-26
4 | 2017-09-01 | 2017-09-02

我需要比较id=2的创建日期和id=1的结束日期

并将id=3的创建日期与id=2的结束日期进行比较,以此类推

结果:显示具有创建日期(id=n)结束日期(id=n-1)+间隔“1”天的id

我应该使用lag()函数吗?我怎么比较呢?我应该使用哪个函数以及如何使用


谢谢

Teradata没有滞后/超前,但您仍然可以获得相同的功能:

select
id,
create_date,
end_date,
max(end_date) over (order by id between 1 preceding and 1 preceding) as prev_end_date
...
qualify
create_date <> prev_end_date + INTERVAL '1' day;
选择
身份证件
创建日期,
结束日期,
最大(结束日期)超过(订单id介于前1个和前1个之间)上一个结束日期
...
具有资格
创建上一个日期上一个结束日期+间隔“1”天;

谢谢您的回答。但我不能在何处使用解析函数。我只是把它放到subselect:)它很有效,非常感谢。@monika01:不需要subselect,Teradata支持
限定
以过滤OLAP函数的结果。