求助:一个很难的应用需求,想了多日无好的解决方案,在线等答案!
//=====================================================================================
C# + SQL SERVER2005环境
1、表A(只有一行数据,称为公式参数表,H表示高度,W表示宽度,L表示长度)
A01(H) | A02(W) | A03(L)
---------------------------
100 | 200 | 300
2、表B(表达式表,B01,B02,B03是表达式描述字段,B04,B05,B06是B01,B02,B03分别对应的值字段)
B01 | B02 | B03 | B04 | B05 | B06
--------------------------------------
H/5 | (W-H)*1.5 | L+20 | | |
W+2 | H*5 | 20+L/2 | | |
....
3、欲根据表A来得到表B中的表达式的值,即得到如下结果:
B01 | B02 | B03 | B04 | B05 | B06
--------------------------------------
H/5 | (H-W)*1.5 | L+20 | 20 | 1500 | 320
W+2 | H*5 | 20+L/2 | 102 | 500 | 170
....
说明:即将B01的计算结果更新到B04字段,B02-B05, B03-B06 对应。
SQL语句或者用存储过程如何实现,或者不好处理的话在C#里如何实现?
------最佳解决方案--------------------试试和不合用
------其他解决方案--------------------连接就可以了啊
update B set B04 = A.A01 /5 ,
B05 = (A.A01 - A.A02) *1.5,
B06 = A.A03 + 20
from A
------其他解决方案--------------------下面是取一条记录处理的,多条循环即可:
declare @B01 varchar(20),@B02 varchar(20),@B03 varchar(20)
declare @tb table(F varchar(20),v int)
select @B01=b01,@B02=B02,@B03=B03
from B
where 主键='XXX'
set @B01='select ''B04'''+replace(replace(REPLACE(@B01,'100','H'),'200','W'),'300','L')
set @B02='select ''B05'''+replace(replace(REPLACE(@B02,'100','H'),'200','W'),'300','L')
set @B03='select ''B06'''+replace(replace(REPLACE(@B03,'100','H'),'200','W'),'300','L')