2014-06-13 31 views
0

我正在计算几列以在新列中获得结果。导致全部为0的列计算结果...原因?

的计算方法如下:

[% Free] = SUM((((((fS.freespace)*8)/1024))/(((fS.size)*8)/1024))*100) 

我是新来的sql,所以这是一个很好的机会,我得到一些专家...

所以我的问题是,是什么导致这种类型的列的结果全部为0? 它可能是由混合数据类型引起的(在这种情况下,两者都是整数,更多是因为我的好奇心和理解)?综合功能?哪些操作的顺序完成?

任何意见,建议或意见赞赏。

回答

2

这可能是混合数据类型造成的。试试这个:

[% Free] = SUM((((((cast(fS.freespace as float))*8)/1024))/(((cast(fS.size as float))*8)/1024))*100) 
+0

它的工作,谢谢!你能解释为什么它不能用我所了解的(我是一名学生)。这两种数据类型都是整数。我用两个bigint做了类似的计算,结果很有效。 – choloboy

+1

我相信SQL在通过arthimetic时将数据保存在int数据类型中。任何小数被截断,结果会有一些小数* 100,但由于该小数= 0(因为小数被截断),它最终是0 * 100 = 0。有道理吗? –

+1

描述问题的一个更简单的方法是SQL Server进行整数算术运算。所以,99/100 = 0。 –

相关问题