有三张表
lingA(id,合计,利润)
lingB(Aid,名称,数量,单价,金额)
kucun(名称,数量,进价)
注:Aid要跟id相等 lingB.名称要跟kucun.名称相等
用触发器实现 在lingB里添加内容 自动计算合计跟利润到A表去 
在网上找到解决的 但只解决了合计的 利润的我实在做不来  大家帮帮忙 补全这个代码 CREATE TRIGGER up ON [dbo].[lingB] 
FOR INSERT
AS
update A 
set 合计=b.cc from lingA A,(select Aid,sum(金额) cc from lingB group by Aid) B where a.id=b.Aid
set 利润=

解决方案 »

  1.   

    update A 
    set 合计=b.cc ,利润=...
    from lingA A,(select Aid,sum(金额) cc from lingB group by Aid) B where a.id=b.Aid 
      

  2.   

    =b.金额 - b.数据 * kuchun.进价
      

  3.   

    有些不理解原表字段,示意性写一下,楼主根据实际情况改下CREATE TRIGGER up ON [dbo].[lingB] 
    FOR INSERT 
    AS 
    update A 
    set 合计=isnull(A.合计,0) + b.cc 
        ,利润= isnull(A.利润,0) + b.利润
    from lingA A,(select t.Aid,sum(t.金额) cc
    ,sum(t.数量*(k.进价-t.单价)) as 利润               -- 如果kucun的进价是单价
    --,sum(t.数量*(k.进价/k.数量-t.单价)) as 利润     -- 如果kucun的进价是总金额
    from lingB t,kucun k 
    where t.名称 = k.名称
    group by Aid) B where a.id=b.Aid 
     
      

  4.   

    一定要写成
     合计=isnull(A.合计,0) + b.cc 
    形式,因为在lingB表Aid可能重复,也可能分次插入,不能下次插入冲掉上次插入。
      

  5.   

    可以同时更新2个字段,如:update a
    set b=5,c=6
      

  6.   


    CREATE TRIGGER up ON [dbo].[lingB] 
    FOR INSERT
    AS
    update A 
    set 利润=b.cc from lingA A,(select Aid,sum((单价-kucun.进价)*lingB.数量) cc from lingB,kucun where lingB.名称 = kucun.名称 group by Aid) B where a.id=b.Aid
    update A
    set 合计=b.cc from lingA A,(select Aid,sum(金额) cc from lingB group by Aid) B where a.id=b.Aid
    谢谢啊 我都弄出来了