2010-01-08 52 views
1

我有我的选择条款:SQL服务器演四舍五入

AVG (cast(scale as decimal(5,2))) 

我不断收到一些像:0.6523412897,没事我似乎得到我想要的我:0.65。 基本上我想有一个2(小数点后两位)的比例。 感谢

回答

1

尝试

ROUND(AVG(scale), 2) 
+0

现在我有:圆(AVG(CAST(规模为十进制)),2),我结果是1.95000 .....我如何摆脱尾随零,所以我只得到1.95? – bmw0128 2010-01-08 22:08:03

8

演员平均,不平均投:

cast(AVG(scale) as decimal(5,2)) 

更新

使用ROUND()改变不是值的类型。例如。 select round(0.12345,2)返回0.12000,因为它应该将0.12345修改为0.12,但在原点后保留原始类型后有5位小数,因此为0.12000。要改变类型,必须使用强制类型,就像在我的文章中一样。

+0

如果我改为:cast(AVG(scale)为十进制(5,2)),我失去了精度,因为我平均的数字是整数,所以结果是1.00,2.00等。 – bmw0128 2010-01-08 22:26:30

+0

想通了(AVG)(作为十进制(5,2))的小数点(5,2)))作为[AVG] – bmw0128 2010-01-08 22:33:15

0

这取决于你所使用的数据库,但是反过来是SQL Server的答案:

ROUND