Sql 四舍五入到最接近的10

Sql 四舍五入到最接近的10,sql,sql-server,Sql,Sql Server,我已经在网上搜索了这个和很多可用的资源。但我被这个简单的问题打动了 四舍五入int数字到最接近的高整数 ex: 63 to 70 71 to 80 select ROUND(63,1) select ROUND(63,-1) 谢谢你的帮助 DECLARE @t TABLE (X INT) INSERT INTO @t (X) VALUES(33),(43),(53),(63),(73) Select floor((X + 9) / 10) * 10 FROM @t 返回

我已经在网上搜索了这个和很多可用的资源。但我被这个简单的问题打动了

四舍五入
int
数字到最接近的高整数

ex: 63  to 70
    71  to 80 

select ROUND(63,1) 
select ROUND(63,-1)
谢谢你的帮助

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
结果

nums Roundoff
35.0    40
53.0    60
64.0    70

不能直接使用ROUND,因为没有内置的机制

但你可以用另一种方式轻松完成:

SELECT ( ( ( x - 1 ) / 10 ) + 1 ) * 10
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
这样你就:

减去一除以10,放弃所有超过10的剩余部分,这意味着你将把63变成6或70变成6(这很重要,因为我想你不想把70四舍五入到80。如果你想,就不要在除法之前减去1)。然后加一(这是四舍五入部分),再乘以10

如果您需要经常使用此功能,您可以定义一个自定义函数来完成此操作。

另一种方法:

SELECT ( ( ( x - 1 ) / 10 ) + 1 ) * 10
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


这是硬编码,我需要一个多值的解决方案