如何使用公式计算列的值

时间:2014-08-20 07:31:46

标签: sql sql-server

我在MSSQL Server上有这个示例表

CREATE TABLE tbl (
  value FLOAT,
  formula NVARCHAR(50)
);

INSERT INTO tbl VALUES ('45.6452','/0.055');

现在我想选择包含2列

结果的表格
select <computation> as Result from tbl

生成我想要的结果的正确查询是什么?

尝试&#34;计算&#34;和&#34; Compute By&#34;但它不适用

注意:我不允许更改表的架构,因为我所做的就是生成一个包含上述2列结果的报告

4 个答案:

答案 0 :(得分:3)

您可以尝试使用CASE WHEN子句,但是事先应该知道计算(并且SQL服务器也应该支持):

select case left(formula,1)
     when '/' then value / convert(float,stuff(formula,1,1,''))
     when '*' then value * convert(float,stuff(formula,1,1,''))
     when '+' then value + convert(float,stuff(formula,1,1,''))
     when '-' then value - convert(float,stuff(formula,1,1,''))
     when '%' then value % convert(float,stuff(formula,1,1,''))
   end as Result
from tbl

Sql fiddle demo

答案 1 :(得分:2)

您可以尝试使用此查询

DECLARE @query VARCHAR(1000)
SET @query = ''
SELECT @query = @query + ' SELECT ' + CONVERT(VARCHAR,value) + formula + ' as [RESULT]' FROM xtbl
EXEC(@query)

答案 2 :(得分:0)

为什么不连接(值,公式)然后作为SQL执行?

示例SQL Server:

 declare @left float = 45.6452;
 declare @right NVARCHAR(50) = '/0.055';
 declare @sql varchar(50) ;
 set @sql = 'select ' + cast(@left as varchar) + @right

 exec(@sql)

结果:

829.91272727

答案 3 :(得分:0)

尝试将值一起添加为字符,然后使用动态SQL执行语句:

DECLARE @sql nvarchar(max)
SELECT @sql= 'SELECT '+ CAST(value AS NVARCHAR(20)) + formula
           FROM tbl
EXEC sp_executesql @sql