SQL仅具有舍入到最接近的函数和舍入到最接近的数字。 如果价格<1向上舍入到小数点后3位,如果价格> = 1向上舍入到小数点后2位,我如何舍入价格。 例如 价格
$0.0024 round up to 0.003
$0.0051 round up to 0.06
$1.213 round up to 1.22
谢谢。
答案 0 :(得分:2)
使用ceiling()
总是四舍五入:
select case when price < 1 then ceiling(price * 1000) / 1000
else ceiling(price * 100) / 100
end
from table
答案 1 :(得分:0)
您可以使用round
函数,以下情况适用于sql server
select case when price<1 then round(price,3) else round(price,2) end
from table
答案 2 :(得分:0)
有两件事要知道:
ROUND()
始终绕下:
ROUND(0.051, 2) = 0.05
如果要舍入,则需要使用另一个函数:CEILING()
但是Ceiling只返回一个整数。诀窍是这样做:
CEILING(0.0051 * 1000)/1000 = 0.006
对于您在此处提供的数据就是解决方案:
SELECT
CASE
WHEN price < 1 THEN CEILING(price*1000)/1000
ELSE CEILING(price*100)/100
END AS rounded_price_up
FROM mytable