日期:2014-05-16 浏览次数:20870 次
有一个表A里有几列如 ---公司一公司号-- 缴费月份(jfyf)-缴费金额(jfje)- 表B里有几列如----公司(比A表多)公司号(去表A公司号一样)--一月缴费--二月缴费--三月缴费 ···十二月缴费 我想把表A里的数据的(缴费金额)一列 根据表A里相应的(缴费日期)copy 到 表B里的十二个 (缴费) 列 里 例如 A表里 id 公司名 缴费月份 缴费金额 公司号 表B 公司名 公司号 一月缴费 二月缴费···· 01 'aaa' 01 1000 1001 'aaa' 1001 02 'aaa' 02 1000 1001 03 'bbb' 02 1000 1002 04 'bbb' 08 1000 1002 05 'ccc' 08 1000 1003 Oracle 里有没有 什么办法实现 把 表A里的金额 根据月份的不同自动 复制到 表B里 create table a(id varchar2(50),gsh varchar2(20),gsm varchar2(50),jhyf varchar2(10),jhje number); insert into a values ('01','1001','aaa','01',5454); insert into a values ('02','1001','aaa','03',342); insert into a values ('03','1001','aaa','04',3232); insert into a values ('04','1002','bbb','01',456); insert into a values ('05','1002','bbb','05',232); insert into a values ('06','1003','ccc','06',234); insert into a values ('07','1003','ccc','04',655); insert into a values ('08','1003','ccc','11',443); insert into a values ('09','1004','ddd','07',556); commit; --把select出来的结果插入到你B表就行了GSH select gsh, sum(decode(jhyf, '01', jhje,0)) 一月缴费, sum(decode(jhyf, '02', jhje,0)) 二月缴费, sum(decode(jhyf, '03', jhje,0)) 三月缴费, sum(decode(jhyf, '04', jhje,0)) 四月缴费, sum(decode(jhyf, '05', jhje,0)) 五月缴费, sum(decode(jhyf, '06', jhje,0)) 六月缴费, sum(decode(jhyf, '07', jhje,0)) 七月缴费, sum(decode(jhyf, '08', jhje,0)) 八月缴费, sum(decode(jhyf, '09', jhje,0)) 九月缴费, sum(decode(jhyf, '10', jhje,0)) 十月缴费, sum(decode(jhyf, '11', jhje,0)) 十一月缴费, sum(decode(jhyf, '12', jhje,0)) 十二月缴费 from a group by gsh GSH 一月缴费 二月缴费 三月缴费 四月缴费 五月缴费 六月缴费 七月缴费 八月缴费 九月缴费 十月缴费 十一月缴费 十二月缴费 -------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 1001 5454 0 342 3232 0 0 0 0 0 0 0 0 1002 456 0 0 0 232 0 0 0 0 0 0 0 1003 0 0 0 655 0 234 0 0 0 0 443 0 1004 0 0 0 0 0 0 556 0 0 0 0 0 ---