2017-03-23 98 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