我的表包含数据
pk | formula | OP_NME
---+-------------+---------
1 | x*10 | A
2 | (X+Y)*10 | B
根据x和y的公式和输入值,我需要输出。
例如:我得到x = 10,Y = 20作为输入,我需要输出A = 100和B = 300。
答案 0 :(得分:4)
这可能不是一个全面的答案,但可能对您有所帮助
Declare @tab table (pk int,formula varchar(100),OP_NME varchar(10),X int)
Insert into @tab values(1,'x*10','A',Null),(2,'(X+Y)*10','B',Null)
Declare @result table (id int identity(1,1),[values] int,pk int)
Declare @s int = 1,
@e int = (Select max(pk) From @tab),
@sql varchar(max) = 'Declare @x int = 10,@y int = 20 ',
@sql2 varchar(max)
While @s <= @e
Begin
Select @sql2 = @sql + 'Select(' + Replace(Replace(formula,'x','@x'),'y','@y') + ')' From @tab Where pk = @s
Insert into @result ([values])
Exec(@sql2)
Update @result
Set pk = @s
Where id = @@identity
Set @s = @s + 1
End
Select T.pk,T.formula,R.[values]
from @result R
join @tab T On R.pk = T.pk
在Management studio中运行SQL并查看结果: