使用 SQL 计算/评估用户定义的公式

Calculating/Evaluate user defined formula with SQL(使用 SQL 计算/评估用户定义的公式)
本文介绍了使用 SQL 计算/评估用户定义的公式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个包含用户定义的计算公式的表和另一个包含值的表.我需要将值注入到计算公式中,才能对公式进行计算并返回结果.

I have a table that is holding user defined calculation formulas and another table that holds the values. I need to inject the value into the calculation formula to be able to evaluate the formula and return the result.

在公式表中称为计算公式的列行中的示例公式

Example formula that is in a column row called Calculation formula in the Formulas table

(310165)/(7248+7249)

这些数字代表 Values 表中对应的 ValueID

These numbers represent corresponding ValueID's in the Values table

ValueID | Value
7248    | 18521
7249    | 3835
310165  | 68546.24

我需要找到一种方法,通过与值表中的 ValueID 匹配,使用 SQL 将值注入到公式表中的公式中.

I need to find a way with SQL to inject the Value into the formula in the Formulas table by matching up with the ValueID in the Values table.

我已经查看了替换和内容以及 xml 路径,但我似乎无法找到完成此操作的方法.完成此操作后,我需要评估使用实际值生成的表达式以返回一个 int 值.任何帮助是极大的赞赏.

I have looked at replace and stuff and for xml path and I cant seem to find a way to get this done. After this is done I then need to evaluate the expression that has been produced with the actual values to return an int value. Any help is greatly appreciated.

推荐答案

此更新将动态处理整个表.注意在@Formulas 中,我添加了一个 ID 和第二个示范记录

This Update will process the entire table dynamically. Notice in @Formulas, I added an ID and a second demonstrative record

Declare @Formulas table (ID int,Calculation varchar(max))
Insert Into @Formulas values
(1,'([310165])/([7248]+[7249])'),
(2,'([999999])/([7248]+[7249])')

Declare @Values table (ValueID int,Value money)
Insert Into @Values values
(7248    , 18521),
(7249    , 3835),
(310165  , 68546.24),
(999999  , 75000)

Declare @SQL varchar(max)=''
Select  @SQL = @SQL+concat(',(',ID,',',Calculation,')') From @Formulas --Where ID=2
Select  @SQL = Replace(@SQL,'['+cast(ValueID as varchar(25))+']',Value) From @Values
Select  @SQL = 'Select * From ('+Stuff(@SQL,1,1,'values')+') N(ID,Value)'
Exec(@SQL)

退货

ID  Value
1   3.06612274109
2   3.35480407944

这篇关于使用 SQL 计算/评估用户定义的公式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Query with t(n) and multiple cross joins(使用 t(n) 和多个交叉连接进行查询)
Unpacking a binary string with TSQL(使用 TSQL 解包二进制字符串)
Max rows in SQL table where PK is INT 32 when seed starts at max negative value?(当种子以最大负值开始时,SQL 表中的最大行数其中 PK 为 INT 32?)
Inner Join and Group By in SQL with out an aggregate function.(SQL 中的内部连接和分组依据,没有聚合函数.)
Add a default constraint to an existing field with values(向具有值的现有字段添加默认约束)
SQL remove from running total(SQL 从运行总数中删除)