如何将十进制数字舍入到最接近的50

时间:2015-06-24 11:53:32

标签: sql-server-2008

如何将十进制数转换或舍入到最接近的50.例如,如果我得到2.00到2.49那么它可能会变为2.50, 2.50到2.99然后它可能会变为3.00。 如果有人知道,请解决。

2 个答案:

答案 0 :(得分:2)

这样的事情应该产生你需要的整理:

SELECT CEILING(<input> * 2.0) / 2.0

其中<input>是当前产生您想要舍入的值的列或表达式。

答案 1 :(得分:0)

我不知道这是否是一种有效的方式,但我试过这个:

IF OBJECT_ID('MyTable','U') IS NOT NULL 
    DROP TABLE MyTable
GO
CREATE TABLE MyTable (num DECIMAL(10,2))
GO
INSERT INTO MyTable 
values (1.00),(1.01),(1.49),(1.50),(1.51),(1.99),(2.00),
(11.00),(11.01),(11.49),(11.50),(11.51),(11.99),(12.00)

SELECT [num],
       CASE
         WHEN ( [num] - [Nbr] ) BETWEEN 0.01 AND 0.49 THEN [Nbr] + 0.5
         ELSE [Nbr]
       END AS [Result]
FROM   (SELECT [num],
               ROUND(num, 0) AS [Nbr]
        FROM   MyTable) t 

注意:可以根据要求修改条件的情况。