2014-06-13 64 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。 –

相關問題