我一直在寻找这个,但我不知道如何询问这个具体的信息。
假设我的sql表中有这样的内容。
Columns:
width : 10
height: 15
Depth: 6我有一个公式列,如下所示
formula: (W*2)+H+D+3其中我用宽度代替W,用高度代替H,用深度代替D。使用sql Replace,我可以做到这一点,并将最终结果转换为
(10*2)+15+6+3问题是,作为结果,我需要在列中进行计算。
我在SQL中直接尝试了这一点
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次查询...
我怎样才能让这成为最好的方式呢?
发布于 2019-07-03 23:02:40
你不能轻易地做你想做的事。SQL Server没有用于从字符串创建代码的方便的分析机制。您可以使用动态SQL和游标,但这很麻烦。
但是,您可以使用系数来存储公式:
formula w_coeff h_coeff d_coeff constant
(W*2)+H+D+3 2 1 1 3
'H*2+W' 1 2 0 0然后,您可以执行以下操作:
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;https://stackoverflow.com/questions/56872942
复制相似问题