首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么替代的有关问题,把公式里的代码替换成实际值,请教怎么写SQL语句,多谢

2012-01-28 
如何替代的问题,把公式里的代码替换成实际值,请问如何写SQL语句,谢谢!有一个表taskname有几个字段如下:tas

如何替代的问题,把公式里的代码替换成实际值,请问如何写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 #

/*
a1a2a3valueformula
------------------------------------------------
1236A1+A2+A3
4233A1+A2-A3
1430A1-A2+A3
17311A1+A2+A3
126-7A1-A2-A3
18312A1+A2+A3
*/

热点排行