sql 错误,四舍五入

Error in sql with rounding

我对 SQL 有一个非常奇怪的问题。我有一个数字为22的单元格,当我想把它四舍五入时,结果不正确。

如果我尝试使用数字而不是单元格,代码运行良好。

select Mora2, round(Mora2/30,0)*30, mora2+1, 
round((mora2+1)/30,0)*30, round(convert(float,mora2)/30,0)*30
from Trimestre 

结果是

Mora2   (No column name)    (No column name)    (No column name)    (No column name)

 22         30                  23                  30                  30

如果我尝试使用该号码,代码运行良好。

 select round(22/30,0)*30 as Mora2

 Mora2
 0

为什么会这样?

谢谢!

您可以 CAST(Mora2 AS INT) 无论何时使用它来去除小数部分并确保整数除法。

当分子或分母不是整数时,除法结果会有小数位。所以 22.0/30 = 0.73333322/30 = 0