当前位置: 代码迷 >> Sql Server >> 怎么update多条记录,并且set后跟的是公式,sql2000
  详细解决方案

怎么update多条记录,并且set后跟的是公式,sql2000

热度:38   发布时间:2016-04-27 12:31:50.0
如何update多条记录,并且set后跟的是公式,sql2000
T1,明细表,请用sql2000老大们,知道是很老的数据库了,但没办法。
SQL code
bh    sale    zzsalea01   1.3a01   1.5a01   1.8a02   3.5a02   3.0

。。。
T2,汇总表
SQL code
bh    sumsale  sumzzsalea01   4.6a02   6.5

[email protected],@b--更新变量值是公式
假如本次更新a01,更新值是2,set公式是2/(1.3+1.5+1.8)=0.4348--这里的bh的记录条数不是固定的,有可能很多。
更新后表变更为
T1
SQL code
bh    sale    zzsalea01   1.3     1.3*0.4348a01   1.5     1.5*0.4348a01   1.8     1.8*0.4348a02   3.5a02   3.0

T2
SQL code
bh   sumsale  sumzzsalea01  4.6      (1.3+1.5+1.8)*0.4348=2.0001    --四舍五入小数点4位a02  6.5

如何实现?

------解决方案--------------------

--更新T1的zzsale
update T1 set zzsale=(select T1.sale*asale from (select bh,convert(decimal(15,4),2/sum(sale)) as asale from T1
group by bh) a where a.bh=T1.bh)

--更新T2的sumzzsale
update T2 set sumzzsale=( select sumsale from(select bh, convert(decimal(15,4),sum(sale)*convert(decimal(15,4),2/sum(sale))) as sumsale from T1
group by bh) a where a.bh=T2.bh)
  相关解决方案