如何替代的问题,把公式里的代码替换成实际值,请问如何写SQL语句,谢谢!
有一个表 taskname
有几个字段如下:
taskid int
task decimal(15,2) 任务
assess decimal(15,2) 完成
form varchar(50) 计算工式
具体数据示例如下:
1 12 15 A/T+1
2 13 10 A*T-3
A代表 assess T代表task
现在想根据公式值,得到相应的分值
taskid task assess 应得到:
1 12 15 A/T+1 2.25
2 10 34 A*T-3 0.4
如何写SQL语句?
ALTER FUNCTION deptaccess(@A decimal(15,2),@P decimal(15,2),@taskid int)
returns varchar(100)
as
begin
declare @ret varchar(100)
set @ret=0
select @ret=replace(replace(formula, 'A ' ,@A ), 'P ',@P) from as_taskname where taskid=@taskid order by dept_kind desc
return @ret
end
写了这个函数,返回的是字符串,把计算过程返回了,如何得到计算结果呢?
谢谢!
------解决方案--------------------2005还是2000
------解决方案--------------------declare @temp table
(
A1 int,
A2 int,
A3 int,
formula varchar(30)
)
insert into @temp values(1,2,3, 'A1+A2+A3 ')
insert into @temp values(4,2,3, 'A1+A2-A3 ')
insert into @temp values(1,4,3, 'A1-A2+A3 ')
insert into @temp values(1,7,3, 'A1+A2+A3 ')
insert into @temp values(1,2,6, 'A1-A2-A3 ')
insert into @temp values(1,8,3, 'A1+A2+A3 ')
create table #
(
A1 int,
A2 int,
A3 int,
formula varchar(30),
value int
)
insert #(a1,a2,a3,formula)
select * from @temp
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ' when ' ' '+formula+ ' ' ' then '+formula+ ' '
from @temp
group by formula
exec( 'update # set value=case formula '+@sql+ ' end ')
select a1,a2,a3,value,formula --- formula只是为了检查结果
from #
drop table #
/*
a1 a2 a3 value formula
------------------------------------------------
1 2 3 6 A1+A2+A3
4 2 3 3 A1+A2-A3
1 4 3 0 A1-A2+A3
1 7 3 11 A1+A2+A3
1 2 6 -7 A1-A2-A3
1 8 3 12 A1+A2+A3
*/