【燃眉之急】不同日起的同一字段如何对应更新(或替换)批量数据(约20000多)?表AC04结构如图(1): 其中字段aac001为唯一,且为主键。
表AC04中某一人的数据如图(2):
有两个问题(结构如上图所示),请DBA老师们给点化一下(不才,谢谢先啦):第一个问题:
如何写SQL实现批量调整,针对如上字段aae031(需要判断是否为空,若为空即封口;否则end)给封上对应月份的最后一天日期(如此情况的,数据量约2万多)?第二问题:
如何写SQL实现批量调整,用2月份的amc001字段值1499.4(数据举例用)替换(或更新)1月份的amc001字段值1715.4(数据举例用)(如此情况的,数据量约2万多)?
表AC04中某一人的数据如图(2):
有两个问题(结构如上图所示),请DBA老师们给点化一下(不才,谢谢先啦):第一个问题:
如何写SQL实现批量调整,针对如上字段aae031(需要判断是否为空,若为空即封口;否则end)给封上对应月份的最后一天日期(如此情况的,数据量约2万多)?第二问题:
如何写SQL实现批量调整,用2月份的amc001字段值1499.4(数据举例用)替换(或更新)1月份的amc001字段值1715.4(数据举例用)(如此情况的,数据量约2万多)?
declare
v_merchantno varchar2(200);
v_compact_code varchar2(200);
v_n number;
begin
v_n := 0;
for rec in (select b.merchantno,b.compact_code from merchant b )
loop
v_merchantno :=rec.merchantno;
v_compact_code := rec.compact_code;
update cooperator_detail a
set a.merchantno=v_merchantno where a.compact_code=v_compact_code;
v_n := v_n + 1;
if mod(v_n, 100) = 0 then
v_n := 0;
commit;
end if;
end loop;
end;