首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server中动态计算包含公式的列并返回值

如何在SQL Server中动态计算包含公式的列并返回值
EN

Stack Overflow用户
提问于 2019-07-03 22:57:06
回答 1查看 310关注 0票数 0

我一直在寻找这个,但我不知道如何询问这个具体的信息。

假设我的sql表中有这样的内容。

代码语言:javascript
复制
Columns:
width : 10
height: 15
Depth: 6

我有一个公式列,如下所示

代码语言:javascript
复制
formula: (W*2)+H+D+3

其中我用宽度代替W,用高度代替H,用深度代替D。使用sql Replace,我可以做到这一点,并将最终结果转换为

代码语言:javascript
复制
(10*2)+15+6+3

问题是,作为结果,我需要在列中进行计算。

我在SQL中直接尝试了这一点

代码语言:javascript
复制
select 1 as width , 
2 as height , 
3 as depth , 
'H*2+W' as formula,
replace(Replace(REPLACE('H*2+W','W',1),'H',2),'D',3) as result

我需要能够直接在查询中做到这一点,并用它的特定值计算每一行结果。

我试着在Select里面做Execs,但是没有成功。如果我的初始查询有1000行,这将运行1000次查询...

我怎样才能让这成为最好的方式呢?

EN

Stack Overflow用户

发布于 2019-07-03 23:02:40

你不能轻易地做你想做的事。SQL Server没有用于从字符串创建代码的方便的分析机制。您可以使用动态SQL和游标,但这很麻烦。

但是,您可以使用系数来存储公式:

代码语言:javascript
复制
formula         w_coeff    h_coeff    d_coeff    constant
(W*2)+H+D+3        2          1           1          3
'H*2+W'            1          2           0          0

然后,您可以执行以下操作:

代码语言:javascript
复制
select v.*, f.*,
       (f.w_coeff * v.w + f.h_coeff * v.h + f.d_coeff * v.d + f.constant)
from (values (1, 2, 3)) v(w, h, d) cross join
     formulas f;
票数 -1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56872942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档