现在,我想把同一个人的2010-07月份的fuzhu_jiangjin
复制到这一个人2010-08月份的fuzhu_jiangjin
SQL语句该怎么写
employee_id都是一样的(从0001~0056)
现在,我想把同一个人的2010-07月份的fuzhu_jiangjin
复制到这一个人2010-08月份的fuzhu_jiangjin
SQL语句该怎么写
employee_id都是一样的(从0001~0056)
不用吧??用一个游标cq不就搞定了??
把7月份的数据存在游标里,然后用一个for循环就搞点了.
for employee_id in cq.employee_id loop
update 表set fuzhu_jiangjin= cq.fuzhu_jiangjin where employee_id =cq.employee_id ;
commit;
end loop;
一个简单update根本不用游标,游标效率很低,那个满意答案的人根本就不懂。
一个update就搞定的,下面的方法在oracle数据库中跑是绝对没问题的。
要注意的是nvl,如果有一个employee_id 7月份没有而八月份有,你写的语句会把8月份的fuzhu_jiangjin 更新为null值,这样就有问题了。
update table a set fuzhu_jiangjin = NVL((select b.fuzhu_jiangjin from table b where b.employee_id = a.employee_id),a.fuzhu_jiangjin and fuzhu_riqi='2010-07')
where fuzhu_riqi='2010-08';
commit;
将8月份的jiangjin按照7月份的更新,如果没有找到对应记录,则维持原来的奖金额。
应为你没提供表名,所以用table代替。
update table a set fuzhu_jiangjin = NVL((select b.fuzhu_jiangjin from table b where b.employee_id = a.employee_id),a.fuzhu_jiangjin and fuzhu_riqi='2010-07')
where fuzhu_riqi='2010-08';
commit;
将8月份的jiangjin按照7月份的更新,如果没有找到对应记录,则维持原来的奖金额。
应为你没提供表名,所以用table代替了
你是要写SQL语句吗?