Create table jj(
       jj_id integer,-- 物理主键
       REPORT_M_ID INTEGER,--主表ID
       ITEM_ID VARCHAR2(20),--项目
       Year varchar2(6),--报表年份
       Org_Code varchar2(10),--组织机构编码
       JAN integer,      --1月
       FER INTEGER,--2月
       MAR INTEGER,--3月
       BUSS_TYPE varchar2(10)--经营业务
);
CREATE TABLE QQ(
       QQ_id integer,-- 物理主键
       REPORT_M_ID INTEGER,--主表ID
       ITEM_ID VARCHAR2(20),--项目
       Year varchar2(6),--报表年份
       Org_Code varchar2(10),--组织机构编码
       JAN integer,      --1月
       FER INTEGER,--2月
       MAR INTEGER,--3月
       BUSS_TYPE varchar2(10)--经营业务
);
--JJ表,jj_id是物理主键,ITEM_ID+Year+Org_Code+BUSS_TYPE是业务组合主键,QQ表类似。
--相同的ITEM_ID+Year+Org_Code,即使BUSS_TYPE不同,但其REPORT_M_ID(主表ID)是一样的
--测试数据
insert into jj select 1,1,'A001_01','201206','H2222',3,3,3,'AA' FROM DUAL;
insert into jj select 2,1,'A001_02','201206','H2222',4,4,4,'AA' FROM DUAL;
insert into jj select 3,1,'A001_03','201206','H2222',5,5,5,'AA' FROM DUAL;
insert into jj select 4,1,'A001_01','201206','H2222',6,6,6,'BB' FROM DUAL;
insert into jj select 5,1,'A001_02','201206','H2222',7,7,7,'BB' FROM DUAL;
insert into jj select 6,1,'A001_03','201206','H2222',8,8,8,'BB' FROM DUAL;
insert into jj select 7,1,'A001_01','201206','H2222',6,6,6,'CC' FROM DUAL;
insert into jj select 8,1,'A001_02','201206','H2222',7,7,7,'CC' FROM DUAL;
insert into jj select 9,1,'A001_03','201206','H2222',8,8,8,'CC' FROM DUAL;insert into QQ select 1,2,'B001_01','201206','H2222',11,11,11,'AA' FROM DUAL;
insert into QQ select 2,2,'B001_02','201206','H2222',12,12,12,'AA' FROM DUAL;
insert into QQ select 3,2,'B001_03','201206','H2222',13,13,13,'AA' FROM DUAL;
insert into QQ select 4,2,'B001_01','201206','H2222',14,14,14,'BB' FROM DUAL;
insert into QQ select 5,2,'B001_02','201206','H2222',15,15,15,'BB' FROM DUAL;
insert into QQ select 6,2,'B001_03','201206','H2222',16,16,16,'BB' FROM DUAL;--将jj的A001_02,修改为QQ表B001_03的值,结果如下:
insert into jj select 2,1,'A001_02','201206','H2222',13,13,13,'AA' FROM DUAL;
insert into jj select 5,1,'A001_02','201206','H2222',16,16,16,'BB' FROM DUAL;

解决方案 »

  1.   

    UPDATE JJ A
       SET (A.JAN, A.FER, A.MAR) =
           (SELECT B.JAN, B.FER, B.MAR
              FROM QQ B
             WHERE A.ITEM_ID = 'A001_02'
               AND B.ITEM_ID = 'B001_03'
               AND A.YEAR = B.YEAR
               AND A.ORG_CODE = B.ORG_CODE
               AND A.BUSS_TYPE = B.BUSS_TYPE)