我想要产品价格的第3轮最后一位数,在250, 样本:当3的最后一个数字位于1到249,9之间时,它舍入为0,当介于250到499.9舍入到500之间时,501到749.9之间再次显示500并且750到999.9显示1000。 怎么办呢?
更多desc: 我有一个存储过程,必须计算产品的最终价格..当它,我们有一个数字在最后,如626300.00 ....现在我想要最后的价格乘以3最后一位数,如果这3个数字是&LT; 250将这3个数字设置为000,如果> 250且<1。 500显示500 .if> 500且&lt; 500&gt; 70再次显示500,并且如果&gt; 750和&lt; 999.9显示000并添加1到4位数。
答案 0 :(得分:0)
假设您的价格值存储为数字,例如类型decimal (18,2)
,您可以执行以下操作:
declare @var decimal(18,2) = '324156.49'
select
case
when @var%1000 between 0 and 249.9 then 1000*cast(@var /1000 as int) + 0
when @var%1000 between 250 and 749.9 then 1000*cast(@var /1000 as int) + 500
else 1000*cast(@var /1000 as int) + 1000
end
模数1000将为您提供最后3位数加上小数点后的任何内容。然后将适当的舍入金额添加到原始价格的数千部分中。
答案 1 :(得分:-1)
declare @t table (
Val money not null primary key
);
insert into @t
values
(7.27),
(4.11),
(2.83),
(3.67);
select t.Val, floor(t.Val) + round((t.Val - floor(t.Val)) * 2, 0) / 2
from @t t;
答案 2 :(得分:-1)
查看此结果。
DECLARE @TAB TABLE (VAL INT)
INSERT INTO @TAB VALUES (1),(100),(450),(499),(750),(900),(321)
SELECT VAL,((VAL/250) + 1) * 250 yourVal FROM @TAB
编辑:对前一个答案感到抱歉。见下文。
DECLARE @TAB TABLE (VAL VARCHAR(40))
INSERT INTO @TAB VALUES ('1305'),('34'),('606'),('890'),('2005')
SELECT
VAL,
((CAST(RIGHT(VAL,3) AS INT)/500) * 500) + ((CAST(RIGHT(VAL,3) AS INT)/250)%2) * 500 [yourVal]
FROM @TAB
结果:
更多测试..!
DECLARE @TAB TABLE (VAL NVARCHAR(40))
INSERT INTO @TAB VALUES ('0'),('249'),('250'),('499'),('500'),('502'),('750'),('749'),('1000'),('1002')
结果: