Unabe用前一行中的那一行更新当前行数据

时间:2018-03-27 02:05:24

标签: sql partition rownum

任何人都可以在下面的执行中帮助我:

我想使用date_value 01-JAN-2018的RAC_ID和SUPV_RACF列中的数据更新date_value 8-JAN-2018的RACF_ID和SUPV_RACF列。基本上我想将特定日期值的数据更新为前一周的date_value中存在的数据。(date_value - 7)。它应该只更新列为effective_dt的行为null。

以下是我尝试但未能输出的查询: 宣布 光标C1是

select * from temp_join;
begin
for i in C1
Loop
update temp_join r 
set r.RACF_ID = i.RACF_ID ,
r.SUPV_RACF = i.SUPV_RACF   
where  to_date(r.date_value , 'dd-mon-yyyy') = to_date(i.date_value , 'dd-mon-yyyy') -7 and
to_date(r.date_value , 'dd-mon-yyyy') > to_date('01-JAN-2018' , 'dd-mon-yyyy') and R.Effective_Dt is null ;
end Loop;
end;

下图将显示:

表格的当前情况

Current scenario of the table

所需的输出

Desired output

我也尝试过自我加入:

update temp_join r
   set (r.racf_id, r.supv_racf) =
          (select i.racf_id, i.supv_racf i
             from temp_join i
            where    i.racf_id = r.racf_id                       --> remark A
                  and to_date(r.date_value , 'dd-mon-yyyy') = to_date(i.date_value , 'dd-mon-yyyy') -7
                  )  --> remark B
 where     to_date(r.date_value , 'dd-mon-yyyy') > to_date('01-JAN-2018' , 'dd-mon-yyyy')
 and to_date(r.date_value , 'dd-mon-yyyy') < to_date('05-MAR-2018' , 'dd-mon-yyyy')
       and r.effective_dt is null;

但上述查询似乎也没有给出所需的输出

0 个答案:

没有答案