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
这是硬编码,我需要一个多值的解决方案