【发布时间】:2018-01-29 20:15:00
【问题描述】:
我有 2 列需要除以 sum(cola)/sum(ColB),但我没有得到想要的结果,因为 SQL Server 似乎截断了小数点后的值 例如。我有-
select 281370/1035
使用简单除法给出 271,而除法的实际结果是 271.8550724637681,我想显示 271.8
我试过了
SELECT cast(round(281370/1035,1) as numeric(36,1))
但结果271.0
【问题讨论】:
-
colA和colB是从哪些类型开始的?试试SELECT 281370.0/1035.0。 (添加假小数通常会强制进行非整数计算) -
嗯,它们不是假小数位。他们真的是零。
-
两个数字都被视为整数,所以它使用整数除法。当您使用强制转换时,您将它用于整数除法的结果。您需要先转换分子或分母(或者您可以使用执行隐式转换的
2081370*1.0/1035) -
@ThorstenKettner 如果我没记错的话,postgres 也有同样的行为
-
还有其他 dbms 也在做整数除法。如果你习惯了它会很方便!
标签: sql sql-server rounding division