update B set aic072 = (
select sum(aic021) from A where AAE002 = '..' group by AAC001),
aic058 = (
select sum(aic021) from A where AAE002 = '..' group by AAC001),
AAE001 = substr(AAE002,1,4)
where  B.AAC001 = A.AAC001

解决方案 »

  1.   

    这样应该好一些:update B set aic072 = (
    select sum(aic021) from A  group by AAC001,substr(AAE002,1,4)),
    aic058 = (
    select sum(aic021) from A  group by AAC001,substr(AAE002,1,4)),
    AAE001 = substr(AAE002,1,4)
    where  B.AAC001 = A.AAC001
      

  2.   

    PROCEDURE Prc_ic02_once   ( prm_grbh     IN  VARCHAR2,
                                   prm_nd       IN  VARCHAR2,
                                   prm_AppCode  OUT NUMBER,
                                   prm_ErrorMsg OUT VARCHAR2)
       IS
          /*-- 变量声明 ----------------------------------------------------------*/
          n_aic021_sum NUMBER(12,2);       
          n_aic024_sum NUMBER(12,2);              
          n_aic020_sum NUMBER(12,2);       
          n_count      INTEGER;         
          v_aab001     VARCHAR2(14);   BEGIN
          -- 初始化
          prm_AppCode := pkg_comm.def_OK;         SELECT SUM(aic021),SUM(aic024),SUM(aic020),COUNT(1),max(aab001)   INTOn_aic021_sum,n_aic024_sum,n_aic020_sum,n_count,v_aab001                              
               FROM ic01                                     
              WHERE aac001 = prm_grbh                     
                AND substr(aae002,1,4) = prm_nd
                AND aae114 = '1'
                AND aae115 = '1'
                AND aae143 = '1'
                AND aae200 = '11'
                AND akc021 = '11';   
                
                
                UPDATE IC02
                SET    AIC072= n_aic021_sum,
                       AIC058= n_aic024_sum,
                       AIC080= n_aic020_sum
                WHERE  AAC001=prm_grbh
                 AND   AAE001=prm_nd;
                 
              IF SQL%NOTFOUND THEN
                 INSERT INTO ic02(aac001,aae001,aab001,AIC072,AIC058,AIC080,aae120)
                      VALUES(prm_grbh,prm_nd+i,v_aab001,n_aic021_sum,n_aic024_sum,n_aic020_sum,'0');
              END IF;
                 Exception
           When Others Then
             prm_AppCode := -1;
             prm_ErrorMsg := '存储过程pkg_I_ZHGL.Prc_ic02_once)出错!'||SqlErrm;   END Prc_ic02_once;这是为上面的问题写的过程,请大家指导下为什么错了!!
      

  3.   

    update b set aic072=aic021,aic058=aic024
    select AAE002,aic021,aic024 (select DATENAME ( year , AAE002) as AAE002,sum(aic021) as aic021,sum(aic024) as aic024
    from a group by DATENAME ( year , AAE002)) as a
    where a.AAE002=b.AAE001