A 表  SL 总数量  MC 物品名称 GG 规格   同一规格的物品是一条
B 表 JHSL 进货数量 MC 物品名称 GG 规格  同一规格的物品是多条
想把B表的进货数量 总计更新到A表 总数量
问怎么写

解决方案 »

  1.   

    update A set SL= (SELECT B.JHSL FROM A,
    (select MC,GG,sum(b.JHSL) AS JHSL from b group by gc,mc) B
    where A.HC=B.HC AND A.GG=B.GG)
      

  2.   

    UPDATE A 
    SET SL=(SELECT B.JHSL FROM
    (select MC,GG,sum(b.JHSL) AS JHSL from b group by GG,mc) B WHERE B.GG=A.GG AND A.MC=B.MC)
    WHERE EXISTS(SELECT 1 FROM B WHERE B.GG=A.GG AND B.MC=A.MC )
      

  3.   


    merge into a
    using (select mc, gg, sum(jhsl)) s from b group by mc, gg) c   --对b表按物品,规格汇总
    on (a.mc = c.mc and a.gg = c.gg)  --连接条件
    when matched then    --匹配时,对a表sl累加
      update set a.sl := a.sl + c.s
    when not matched then  --不匹配时,在a表插入一条数据
      insert values (c.s, c.mc, c.gg);
      

  4.   

    这里说表B1不存在,
    DROP   TABLE   a  ;
    CREATE TABLE a 
    (
      MC      VARCHAR(30)  PRIMARY KEY NOT NULL,   
    GG      VARCHAR(4)    NOT NULL,      
     
      SL    NUMBER(5)    NULL  
    )  
    ;
    DROP   TABLE   b  ;
    CREATE TABLE b 
    (
      MC      VARCHAR(30)  PRIMARY KEY NOT NULL,   
    GG      VARCHAR(4)    NOT NULL,     
    JHSL    NUMBER(5)    NULL       
    )  
    ;UPDATE A  
    SET SL=(
    SELECT B1.JHSL FROM
    (select MC,GG,sum(b.JHSL) AS JHSL from b group by GG,mc) B1 WHERE B1.GG=A.GG AND A.MC=B1.MC
    )
    WHERE EXISTS(SELECT 1 FROM B1 WHERE B1.GG=A.GG AND B1.MC=A.MC )
    --这里说表B1不存在,A 表 SL 总数量 MC 物品名称 GG 规格 同一规格的物品是一条
    B 表 JHSL 进货数量 MC 物品名称 GG 规格 同一规格的物品是多条
    想把B表的进货数量 总计更新到A表 总数量