RoundFunctionSQL最多10个

时间:2018-04-27 08:31:53

标签: sql sql-server

我已经在网上搜索了这个和很多资源。但我对这个简单的问题感到震惊

int舍入到最接近的高整数

ex: 63  to 70
    71  to 80 

select ROUND(63,1) 
select ROUND(63,-1)

感谢您的帮助

4 个答案:

答案 0 :(得分:4)

DECLARE @t TABLE (X INT)
INSERT INTO @t (X) VALUES(33),(43),(53),(63),(73)

Select floor((X + 9) / 10) * 10
FROM @t

返回

40
50
60
70
80

答案 1 :(得分:0)

DECLARE @Table TABLE (nums DECIMAL(5,1))
INSERT INTO @Table
VALUES  (35),(53),(64)

SELECT  nums,
        (Convert(int,(nums/10)) + 1) * 10 AS Roundoff
FROM @Table

结果

nums Roundoff
35.0    40
53.0    60
64.0    70

答案 2 :(得分:0)

您无法直接使用ROUND,因为没有内置机制可以这样做。

但你可以轻松地采取另一种方式:

absolute - label

这样你:

将一个除以10减去,丢弃任何超过10的余数,这意味着你将63变为6或70变为6(这很重要,因为你不想绕70到80,我猜。如果你做的话,只是在分割前不减1。然后添加一个(这是向上舍入的部分)并再乘以10。

如果你需要经常使用它,你可以定义一个自定义函数来为你完成。

答案 3 :(得分:0)

另一种方式:

DECLARE @t TABLE (X INT)
INSERT INTO @t (X) VALUES(30),(31),(33),(39),(43),(53),(63),(73)

Select X, round(X + 9, -1, 1) Rounded
FROM @t
+----+---------+
| X  | Rounded |
+----+---------+
| 30 |      30 |
| 31 |      40 |
| 33 |      40 |
| 39 |      40 |
| 43 |      50 |
| 53 |      60 |
| 63 |      70 |
| 73 |      80 |
+----+---------+