update a
set ex_num=(select sum(Num) from b 
      where en_id like rtrim(a.com_code)+'%' and ie_='e'),
im_num=(select sum(Num) from b 
      where en_id like rtrim(a.com_code)+'%' and ie_='I')呵呵,示意性的!

解决方案 »

  1.   

    TO:Haiwer(海阔天空) 
        这样可以 统计 出所有 子公司的数据??好象不行···
      

  2.   

    如果A表有所有子公司 AND B表有所有子公司  就可以!
      

  3.   

    a 表结构如下
    子公司代码   子公司名           出口量       进口量       ...
    com_code   com_name      ex_num    im_num     ...
    01                驻北京公司          NULL        NULL    ...
    02                驻上海公司          NULL        NULL    ...
    . . .
    B 表结构如下
    产品编号       进出口标志    ...
    en_id             ie_     ...
    0100023           I   
    0200212           I
    0122222           I
    0111111           E
    0221111           I
    ...  
    EN_ID 的前两位即为 COM_CODE 出口量即为 所有IE_MARK=E的数据
    现要写一存储过程分别统计  子公司代码为 01  02  03  ... 的进出口量,然后写入A表
     
      

  4.   

    你就用游标,对B表的数据一条一条的处理,根据en_id的前两个字符和ie_来对A表的数据进行UPDATE,修改其相应的ex_num 和 im_num,循环处理完了,ex_num 和 im_num不就累加得到了你需要的结果了。
      

  5.   

    写了两次表结构都没有写B表的进出口数量字段(第一次回答时用Num),难道没有这个字段?!试过上面语句没有?加个过程头不就是可以一次更新A表的所有子公司,再从A表查询不就行了?
      

  6.   

    不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口次数,,相当于求B表中符合条件的 COUNT(*) 
      

  7.   

    不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口次数,,相当于求B表中符合条件的 COUNT(*) 
      

  8.   

    不好意思,未说清楚,进出口数量并不是表示某项产品的进出口总数,而是指所有该子公司内产品的进出口 次数 ,,相当于求B表中符合条件的 COUNT(*) ,