比较不同列 Teradata 中的行
Compare rows in different column Teradata
我需要将 1 列的值与 2 列的先前值进行比较。例如,我有 table:
id | create_date | end_date
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 的 create_date 和 id = 1 的 end_date
并比较 id = 3 的 create_date 和 id = 2 的 end_date 等
结果:显示具有 create_date (id = n) <> end_date (id = n-1) + interval '1 的 id ' 日
我应该使用 lag() 函数吗?我怎么比较呢?我应该使用哪个功能以及如何使用?
谢谢
Teradata 没有 lag/lead,但您仍然可以获得相同的功能:
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;
我需要将 1 列的值与 2 列的先前值进行比较。例如,我有 table:
id | create_date | end_date
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 的 create_date 和 id = 1 的 end_date
并比较 id = 3 的 create_date 和 id = 2 的 end_date 等
结果:显示具有 create_date (id = n) <> end_date (id = n-1) + interval '1 的 id ' 日
我应该使用 lag() 函数吗?我怎么比较呢?我应该使用哪个功能以及如何使用?
谢谢
Teradata 没有 lag/lead,但您仍然可以获得相同的功能:
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;