火急......
有三个表
表ythbzlb
hbbm int , addmoney float
1 0
2 0
表cpjcdmxb
id hbbm(外键), sl, dj,
1 1 1 10
1 1 1 5
表ytfwh 表
hbbm 外键,whsl float,
空表
要求:
得到的结果正确为
表ythbzlb
hbbm int , addmoney float
1 7.5
2 0
我写了一段程序
update ythbzlb
set ythbzlb.addmoney=((D.whsl+ythbzlb.addmoney)+(c.dj*c.sl))/(d.whsl+c.sl) //公式是正确的.
From (select
a.hbbm
sl=isnull(a.sl,0),
dj= isnull(A.dj,0)
from cpjcdmxb a
group by a.hbbm) c,
(select hbbm,sum(isnull(whsl,0)) whsl from ytfwh group by hbbm) D
where ythbzlb.hbbm=C.hbbm And c.hbbm=D.hbbm
但是得到的结果为
表ythbzlb
hbbm int , addmoney float
1 5 //正确应该是7.5
2 0
我找到原因在哪里。
(select hbbm,sum(isnull(whsl,0)) whsl from ytfwh group by hbbm) D
出在这句上。
sum(isnull(whsl,0)) whsl 每次都是一样的。
应该在update ythbzlb之后 再update ytfwh set whsl=whsl+c.sl
这样才可以得到正确结果。
但是两个update不能同时写,不知道怎么办。
不知道我描述清楚没有。