2014-11-14 24 views
0

任何人都可以幫助我解決這個問題嗎?比較兩條連續的線,並用teradata中的下一條線更新第一條線

我需要比較下面給出的表的連續行,並用第二行字段更新第一行字段。

MBR  JOIN DT  FIELD1 FIELD2 FIELD3 OPEN_DT  CLOS_DT  LLKEY  UPD_LLKEY 
12345 2014-07-30 D  UNK  S  2014-07-31 **2014-08-24** 715700024 **721200013** 
12345 2014-09-11 D  UNK  UNK  **2014-09-13** 2014-10-01 **718600061** 735800004 
12345 2014-09-29 D  UNK  UNK  2014-10-01 8888-12-31 735800004 735800004 

這裏ineed在連續兩行(first_line.CLOS_DT和second_line.OPEN_DT)比較,如果不匹配需要更新first_line.CLOS_DT與second_line..OPEN_DT,UPD_LLKEY與第二線的LLKEY。和所需的輸出

MBR  JOIN DT  FIELD1 FIELD2 FIELD3 OPEN_DT  CLOS_DT  LLKEY  UPD_LLKEY 
12345 2014-07-30 D  UNK  S  2014-07-31 **2014-09-13** 715700024 **718600061** 
12345 2014-09-11 D  UNK  UNK  **2014-09-13** 2014-10-01 **718600061** 735800004 
12345 2014-09-29 D  UNK  UNK  2014-10-01 8888-12-31 735800004 735800004 

任何幫助將高度讚賞.. :)

感謝, Apmsa

回答

0

這個保存到新表天寶

SELECT mb_r 
,join_dt 
,open_dt 
,close_dt 

,COALESCE(MAX(open_dt) OVER (PARTITION BY mb_r ORDER BY open_dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING), close_dt) A2 

FROM TEMP2 

現在更新TEMP2錶速度表

UPDATE temp2 C1 
    FROM (SELECT mb_r 
    ,join_dt 
    ,open_dt 
    ,close_dt 
    ,A2 from tempo) D1 
    SET close_dt = d1.A2 
WHERE C1.mb_r = d2.mb_r 
and c1.join_dt=d2.join_dt; 

您還可以包含您需要以類似方式更新上述查詢的其他庫侖。