2017-03-23 56 views
0

我需要比较1列中的值与2列中的前一值。例如,我有表:比较不同列中的行Teradata

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

我需要END_DATE为ID = 1

比较为ID = 2 CREATE_DATE并用END_DATE为ID = 2等,为ID = 3比较CREATE_DATE

结果:告诉我ID具有CREATE_DATE(ID = N)<> END_DATE(ID = N-1)+间隔 '1' 天

我应该使用滞后()FUNC重刑?我如何比较它?我应该使用哪个功能?

谢谢

回答

0

的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; 
+0

感谢您的回答。但是我不能在哪里使用分析功能。我只是把它用于再次选择:)它的工作原理,非常感谢。 – monika01

+0

@ monika01:不需要Subselect,Teradata支持'QUALIFY'对OLAP函数的结果进行过滤。 – dnoeth

+0

哎呀,谢谢你解决这个问题。 – Andrew