我用SQLserver2000
我现在有三张表,费用表(用户号,水费,电费,),用量表(用户号,用水量,用电量),价格表(水价,电价)价格表就一行。我现在以用户号为关系键,用对应的用户表中的用水量*水价,来更新用户表中的水费,用电量*电价来更新用户表中的电费。最好用个存储过程实现。
能给出解决方案的50分!!!

解决方案 »

  1.   

    update 费用表
    set 水费=t.水费,
    电费=t.电费
    from 费用表,(select 用户号,
    sum(isnull(用水量,0))*(select top 1 水价 from 价格表) as 水费,
    sum(isnull(用电量,0))*(select top 1 电价 from 价格表) as 电费)t
    where 费用表.用户号=t.用户号
      

  2.   

    go
    update usertab
    set owwatfee=t.wtfe,
    owelefee=t.elfe,
    owgasfee=t.gsfe
    from usertab,(select sum(userid) as userid,
    sum(isnull(watmout,0))*(select top 1 watp from prc_view) as wtfe,
    sum(isnull(elemout,0))*(select top 1 elep from prc_view) as elfe,
    sum(isnull(gasmout,0))*(select top 1 gasp from prc_view) as gsfe from mout)t
    where usertab.userid=t.userid
    结果(所影响的行数为 0 行)
    高手再看一下
      

  3.   

    是不是mout和usertab中没有userid相等的记录啊?另外保险点做法,在update前加begin tran,更新成功后commit tran,失败的话rollback tran,以免更新错了还原很麻烦.