SQLSERVER的公式计算方法介绍
SQLSERVER的公式计算方法介绍
今天在CSDN上读到一篇文章有关公式计算的,看了这里我有点怀疑自己写SQL的能力了,写了这么多年,以前碰到公式计算的问题都是按照DS的公式分析方法来做的,之前写的一个存储过程调用来调用,现在才知道原来这样要简单很多,快很多,哎,真是吃了没文化的大亏了。
以下转载自CSDN
--成本表
create table 成本表(id int,r_code int
,始重 decimal(20,2),末重 decimal(20,2)
,成本 decimal(20,2),续重成本 decimal(20,2)
,公式 varchar(100))
insert into 成本表
select 1,2,0.5,20,10,5,'(重量*2-1)*续重成本+成本'
union all select 2,2,20,40,8,null,'重量*成本'
go
--计算的存储过程
create proc p_calc
@r_code int,
@重量 int,
@结果 decimal(20,2) output
as
declare @s nvarchar(4000), @a nvarchar(4000)
select @s='select @re='+公式+' from (select 成本='
+cast(isnull(成本,0) as varchar)+',续重成本='
+cast(isnull(续重成本,0) as varchar)+',重量='
+cast(isnull(@重量,0) as varchar)+') a'
from 成本表
where r_code=@r_code and @重量 between 始重 and 末重
--set @a = @s+N'@re decimal(20,2) out'
exec sp_executesql @s,N'@re decimal(20,2) out',@结果 out
select @s
go
--调用示例
declare @结果 decimal(20,2)
exec p_calc 2,15,@结果 out
select 结果=@结果
go
--删除测试环境
drop table 成本表
drop proc p_calc