2012-12-01 39 views
0

我試圖運行此查詢,但它似乎沒有在數學計算後正確格式化數字。比例尺應該是2,但不會像應該那樣顯示。用選擇語句中的比例返回分號的結果

SELECT 30/60 as Diff FROM Table 

這將返回爲0

SELECT Convert(Numeric(8,2), 30/60) as Diff FROM Table 

這將返回爲0.00

如何獲得需要這個返回0.50

回答

3

你可以嘗試以下方法和實現它的方法很少。使用一個變量,或者只是在字段本身上執行CAST,CONVERT

SELECT (CAST(30 AS DECIMAL(8,2))/CAST(60 AS DECIMAL(8,2))) as Diff FROM Table 

SELECT (CAST(30/60) AS DECIMAL(8,2)) as Diff FROM Table 

SELECT (30/60.0) as Diff FROM Table; 

SELECT CONVERT(DECIMAL(8,2), 30/60.0) as Diff FROM Table 

請看一看這個MSDN article for further reference

1

在進行除法或分割實數而不是整數之前轉換爲數字。進行整數運算時,會丟棄任何小數部分。分數下降後轉換對你沒有任何好處。

SELECT CONVERT(NUMERIC(8,2),30.0/60.0) AS DIFF FROM TABLE 

,或者如果選擇列,而不是用數字

SELECT CONVERT(NUMERIC(8,2),columnA)/CONVERT(NUMERIC(8,2),columnB) AS DIFF FROM TABLE 

(轉換都只是要確定劃分是根據我們想要的規則來執行)

+0

謝謝您的回答,但你能舉個例子嗎? –

+0

@ZeeTee我更新了一個例子 – tvanfosson

+0

@tvanfosson嗨,感謝您注意到前面的錯字:)我估計是來回轉換。 – bonCodigo