我已经在网上搜索了这个和很多资源。但我对这个简单的问题感到震惊
将int
舍入到最接近的高整数
ex: 63 to 70
71 to 80
select ROUND(63,1)
select ROUND(63,-1)
感谢您的帮助
答案 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 |
+----+---------+