日期:2014-05-16  浏览次数:20870 次

数据库 sql 怎样实现 一下要求
有一个表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里

------解决方案--------------------
功能是自己写出来的,oracle不会帮你做这事
------解决方案--------------------
SQL code

有一个表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
 
---