任何人都可以帮助我执行以下执行:
我想更新date_value 8-JAN-2018的RACF_ID和SUPV_RACF列作为date_value 01-JAN-2018的RAC_ID和SUPV_RACF列中的数据。基本上我想将特定日期值的数据更新为前一周的date_value中存在的数据。(date_value - 7)。它应该只更新列effective_dt为null的行
下面是我尝试但无法获得输出的查询:
declare
cursor C1 is
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;
我希望实现的输出与表的当前场景:
桌子
您的消息中没有图像(我想您计划附加它们)。无论如何,像这样的SQL可能会完成这项工作:
update temp_join r
set (r.racf_id, r.supv_racf) =
(select i.recf_id, i.supv_racf i
from temp_join i
where i.id = r.id --> remark A
and r.date_value = i.date_value - 7) --> remark B
where r.date_value > date '2018-01-01'
and r.effective_dt is null;