日期:2014-05-18  浏览次数:20543 次

求救!一个SQL语句,在线急等
销售额为50000元 

有一个表如下A: 
开头符号 开始金额 结束符号 结束金额 奖金比例 
  < 20000 1% 
  >= 20000 < 50000 2% 
  >= 50000 < 100000 5% 
  > 100000 7% 

根据销售额在这个表中的奖金设置段获取奖金 销售额及表A是根据用户设置和可变的 

如以上结果为 50000*5%=2500元 

在线等呀!

------解决方案--------------------
--注意:把引号('')之间的空格删除掉
--把表改一下: 
/* 
开头符号 开始金额 结束符号 结束金额 奖金比例
---------- ----------- ---------- ----------- -----------
>= 0 < 20000 1 
>= 20000 < 50000 2 
>= 50000 < 100000 5 
>= 100000 < NULL 7 
*/ 

create table tb(开头符号 varchar(10),开始金额 int,结束符号 varchar(10),结束金额 int,奖金比例 int) 
insert into tb values('>=',0 ,'<',20000, 1)
insert into tb values('>=',20000 ,'<',50000, 2)
insert into tb values('>=',50000 ,'<',100000,5)
insert into tb values('>=',100000,'<',null,7)
go 

declare @xse as int 
set @xse = 150000 

if @xse < 100000 
select (@xse * 奖金比例)/100 奖金 from tb where 开始金额 >= @xse and 结束金额 > @xse and 开头符号 = '>='
else
select (@xse * 奖金比例)/100 奖金 from tb where 结束金额 is null 

drop table tb 

/*
奖金
----------- 
10500
(所影响的行数为 1 行)
*/