这个很简单啊,先把NAME为李四、李五变成 李6,然后按name和YEAR合并RMB就好了select name,sum(money),year from ( select decode(name,'李四','李六','李五','李六',name) as name,money,year from a) group by name,year
create or replace PROCEDURE MERGE_Z(id1 in int ,id2 in int ,setname in VARCHAR2) AS s1 TBL_TMP_STATISTIC%rowtype; s2 TBL_TMP_STATISTIC%rowtype;BEGIN SELECT * INTO s1 FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID = id1 AND YEAR =(select extract(year from sysdate) from dual); SELECT * INTO s2 FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID = id2 AND YEAR =(select extract(year from sysdate) from dual);UPDATE TBL_TMP_STATISTIC SET NORMALNUM=s1.NORMALNUM+s2.NORMALNUM , OUTNUM= s1.OUTNUM+s2.OUTNUM, DEATHNUM= s1.DEATHNUM+s2.DEATHNUM, WHERE TOWN_REGIONID =z_id1; DELETE FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID= id2; END MERGE_Z; 楼上大神 其实真正是这个问题 上面的代码是只改当前年数据 现在要求所以年份的都改了 求指导 代码应该怎么修改
from (
select decode(name,'李四','李六','李五','李六',name) as name,money,year
from a)
group by name,year
s1 TBL_TMP_STATISTIC%rowtype;
s2 TBL_TMP_STATISTIC%rowtype;BEGIN
SELECT * INTO s1 FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID = id1 AND YEAR =(select extract(year from sysdate) from dual);
SELECT * INTO s2 FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID = id2 AND YEAR =(select extract(year from sysdate) from dual);UPDATE TBL_TMP_STATISTIC
SET
NORMALNUM=s1.NORMALNUM+s2.NORMALNUM ,
OUTNUM= s1.OUTNUM+s2.OUTNUM,
DEATHNUM= s1.DEATHNUM+s2.DEATHNUM,
WHERE TOWN_REGIONID =z_id1;
DELETE FROM TBL_TMP_STATISTIC WHERE TOWN_REGIONID= id2;
END MERGE_Z;
楼上大神 其实真正是这个问题
上面的代码是只改当前年数据 现在要求所以年份的都改了
求指导 代码应该怎么修改
一个区 一年只有一条数据
这个表的字段有100多个 所以就不贴出来了 太麻烦了 反正都是set一下
直接用我给你的SQL就好了,改一个区的名称变成另外一个区就好了