27,579
社区成员
发帖
与我相关
我的任务
分享
create table TB(积分 int)
insert into TB select 67500
insert into TB select 125412
go
create function fhje(@jf int)
returns decimal(10,2)
as
begin
declare @je decimal(10,2)
if @jf>5000 and @jf<=30000
set @je=@jf*0.02
else if @jf>30000 and @jf<=50000
set @je=600+(@jf-30000)*0.03
else if @jf>50000 and @jf<=100000
set @je=1200+(@jf-50000)*0.04
else if @jf>100000
set @je=2000+(@jf-100000)*0.05
return @je
end
go
select 积分,dbo.fhje(积分) as 返还金额
from tb
/*
积分 返还金额
----------- ---------------------------------------
67500 1900.00
125412 3270.60
(2 行受影响)
*/
go
drop table tb
drop function dbo.fhje
declare @积分 int
set @积分 = 67500
select case when @积分 >= 100001 then (@积分 - 100000) * 0.05
+ 50000 * 0.04
+ 20000 * 0.03
+ 30000 * 0.02
when @积分 >= 50001 then (@积分 - 50000) * 0.04
+ 20000 * 0.03
+ 30000 * 0.02
when @积分 >= 30001 then (@积分 - 30000) * 0.03
+ 30000 * 0.02
when @积分 >= 5000 then @积分 * 0.02
else 0
end as 返还金额
--结果
返还金额
---------------------------------------
1900.00
(1 行受影响)
DECLARE @i INT
SELECT CASE WHEN @i > 50000
THEN ( @i - 50000 ) * 0.04 + 20000 * 0.03 + 30000 * 0.02
ELSE CASE WHEN @i BETWEEN 30000 AND 50000
THEN ( @i - 30000 ) * 0.03 + 30000 * 0.02
ELSE @i * 0.02
END
END