2014-02-06 33 views
-1

我想從下面的語句的比例除以造成零兩個查詢,TSQL

Select ((query1)/(query2)) AS Ratio. 

結果爲0。實際的結果是0.34 所以SQL被四捨五入爲零。我怎樣才能解決這個問題?

+0

整數除法。將其中一個邊轉換爲'numeric'或'float' –

+0

當我嘗試下面的語句時:SELECT((5)/(10))結果仍然是0.每個查詢都會產生一個數字,但除法將方程向上吹來 – ColorfulWind

+0

是的,他們都是整數。分子和分母需要非整數以避免整數除法(它只返回「整個」部分而忽略餘數)。你看過重複嗎? –

回答

1
Select( 
     (SELECT 8) --<-- Query 1 returns INT 8 
      /
     (SELECT 5) --<-- Query 2 returns INT 5 
    ) AS Ratio 

因爲價值觀詮釋,但分,當你得到一個十進制值回,SQL Server會隱式轉換爲INT,將截斷小數點,並返回一個整數回來。

上面的查詢返回1

Select( 
     CAST((SELECT 8)AS NUMERIC(18,5)) --<-- Query 1 CAST as a DECIMAL or NUMERIC 
      /
     CAST((SELECT 5) AS NUMERIC(18,5)) --<-- Query 2 CAST as a DECIMAL or NUMERIC 
    ) AS Ratio 

當轉換成由兩個查詢SQL Server會通過將兩個查詢返回的結果隱式丁文重新調校的數字數據類型的結果,並返回

結果:1.60000000000000000000