有人可以帮我解决这个问题吗?
我需要比较下面给定表的连续行,并用第二行字段更新第一行字段。
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),如果它不匹配则需要使用second_line..OPEN_DT更新first_line.CLOS_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 :(得分:0)
将此保存到新表Tempo
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;
您还可以以与上述查询类似的方式添加您需要更新的其他库存。