根据Column中的公式计算

时间:2014-09-01 05:59:16

标签: sql sql-server sql-server-2008 tsql

我的表包含数据

pk |  formula    |    OP_NME
---+-------------+---------
 1 |   x*10      |  A
 2 |   (X+Y)*10  |  B

根据x和y的公式和输入值,我需要输出。

例如:我得到x = 10,Y = 20作为输入,我需要输出A = 100和B = 300。

1 个答案:

答案 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并查看结果:

enter image description here