2014-11-14 2 views
0

누구든지이 문제를 해결할 수 있습니까?두 연속 라인을 비교하고 첫 번째 라인을 테라 데이타의 다음 라인으로 업데이트하십시오.

아래 주어진 테이블의 연속 행을 비교하고 첫 번째 행 필드를 두 번째 행 필드로 업데이트해야합니다.

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 

가 여기에 두 개의 연속 된 선 (first_line.CLOS_DT 및 second_line.OPEN_DT)를 비교하는 ineed, 그 일치하지 않는 필요가 second_line..OPEN_DT와 first_line.CLOS_DT, 두 번째 줄의 LLKEY와 UPD_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

지금 TEMP2를 업데이트 새 테이블 템포

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 

이 저장 템포 테이블의 테이블

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; 

위 쿼리와 비슷한 방식으로 업데이트해야 할 다른 네트워크를 포함 할 수도 있습니다.

관련 문제