举个例:http://expert.csdn.net/Expert/topic/2323/2323708.xml?temp=.2692224 我用sql server数据库,库中有如下两表。 表t1保存不同类型人员在消费时的折扣计算公式及奖励积分计算公式,如下: 类型 折扣价 积分 一般会员 本次消费额* 0.95 积分+round(本次消费额/1000) 白银会员 本次消费额* 0.9 积分+round(本次消费额/1000) 黄金会员 本次消费额* 0.85 积分+round(本次消费额/1000) 钻石会员 本次消费额* 0.8 积分+round(本次消费额/1000)表t2中保存人员的消费情况,并要根据t1中各对应字段公式计算其结果,如下: 会员编号 类型 本次消费额 折扣价 积分 002 白银会员 1520.00 0 0 005 黄金会员 3300.00 0 0 007 一般会员 350.00 0 0 034 钻石会员 520.00 0 0 002 白银会员 780.00 0 0如上两表,在sql server查询分析器里我想用t1表中的公式直接用update命令计算出t2表中对应字段的值。命令如下:update t2 set 折扣价=t1.折扣价,积分=t1.积分 from t1,t2 where t1.类型=t2.类型可是执行时却提示说数据类型转换出错,因为t1表中的折扣价字段和积分字段为char型,保存的计算公式,可在t2表中的折扣份和积分字段却为数值型,所以出错。本人要如何才能实现如上算法。请高人们帮我看看我应如何做!查了一夜sql书也找不到办法,只能求教各位了。 ******************* create table #t1(类型 varchar(8),折扣价 varchar(100),积分 varchar(100)) insert #t1 select '一般会员','本次消费额*0.95','积分+round(本次消费额/1000,0)' Union all select '白银会员','本次消费额*0.9','积分+round(本次消费额/1000,0)' Union all select '黄金会员','本次消费额*0.85','积分+round(本次消费额/1000,0)' Union all select '钻石会员','本次消费额*0.8','积分+round(本次消费额/1000,0)'create table #t2(会员编号 char(3),类型 varchar(8),本次消费额 numeric(10,2),折扣价 numeric(10,2),积分 int) insert #t2 select '002','白银会员',1520.00, 0, 0 union all select '005','黄金会员',3300.00, 0, 0 union all select '007','一般会员',350.00, 0 , 0 union all select '034','钻石会员',520.00, 0 , 0 union all select '002','白银会员',780.00, 0 , 0 declare @a char(100),@b varchar(100),@c varchar(100)declare cur cursor for select * from #t1 open curfetch next from cur into @a,@b,@cwhile @@fetch_status = 0 begin exec('update #t2 set 折扣价='+@b+',积分='+@c+' where 类型='''+@a+'''') fetch next from cur into @a,@b,@c end close cur deallocate curSelect * from #t2 go drop table #t1,#t2
返利政策ID,说明,公式,有效期始 有效期止
单据资料
单号,时间,客户名称 商品名称 数量 价格 返利政策ID
我用sql server数据库,库中有如下两表。
表t1保存不同类型人员在消费时的折扣计算公式及奖励积分计算公式,如下:
类型 折扣价 积分
一般会员 本次消费额* 0.95 积分+round(本次消费额/1000)
白银会员 本次消费额* 0.9 积分+round(本次消费额/1000)
黄金会员 本次消费额* 0.85 积分+round(本次消费额/1000)
钻石会员 本次消费额* 0.8 积分+round(本次消费额/1000)表t2中保存人员的消费情况,并要根据t1中各对应字段公式计算其结果,如下:
会员编号 类型 本次消费额 折扣价 积分
002 白银会员 1520.00 0 0
005 黄金会员 3300.00 0 0
007 一般会员 350.00 0 0
034 钻石会员 520.00 0 0
002 白银会员 780.00 0 0如上两表,在sql server查询分析器里我想用t1表中的公式直接用update命令计算出t2表中对应字段的值。命令如下:update t2 set 折扣价=t1.折扣价,积分=t1.积分 from t1,t2 where t1.类型=t2.类型可是执行时却提示说数据类型转换出错,因为t1表中的折扣价字段和积分字段为char型,保存的计算公式,可在t2表中的折扣份和积分字段却为数值型,所以出错。本人要如何才能实现如上算法。请高人们帮我看看我应如何做!查了一夜sql书也找不到办法,只能求教各位了。
*******************
create table #t1(类型 varchar(8),折扣价 varchar(100),积分 varchar(100))
insert #t1 select
'一般会员','本次消费额*0.95','积分+round(本次消费额/1000,0)'
Union all select
'白银会员','本次消费额*0.9','积分+round(本次消费额/1000,0)'
Union all select
'黄金会员','本次消费额*0.85','积分+round(本次消费额/1000,0)'
Union all select
'钻石会员','本次消费额*0.8','积分+round(本次消费额/1000,0)'create table #t2(会员编号 char(3),类型 varchar(8),本次消费额 numeric(10,2),折扣价 numeric(10,2),积分 int)
insert #t2 select
'002','白银会员',1520.00, 0, 0
union all select
'005','黄金会员',3300.00, 0, 0
union all select
'007','一般会员',350.00, 0 , 0
union all select
'034','钻石会员',520.00, 0 , 0
union all select
'002','白银会员',780.00, 0 , 0
declare @a char(100),@b varchar(100),@c varchar(100)declare cur cursor for select * from #t1
open curfetch next from cur into @a,@b,@cwhile @@fetch_status = 0
begin
exec('update #t2 set 折扣价='+@b+',积分='+@c+' where 类型='''+@a+'''')
fetch next from cur into @a,@b,@c
end
close cur
deallocate curSelect * from #t2
go
drop table #t1,#t2