2014-11-14 57 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; 

您还可以包含您需要以类似方式更新上述查询的其他库仑。