SQL舍入到2或3小数

时间:2019-01-23 09:42:57

标签: sql sql-server

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

谢谢。

3 个答案:

答案 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