2016-11-30 27 views
0

我是新來的SQL,我試圖從兩個預先計算的數字計算百分比。我希望百分比在2個小數點。數字是整數,所以我將它們作爲小數前的百分比計算。計算簡單地來自同一張表的作爲十進制鑄造不按預期行事

(Risk1/GrandTotal * 100)。

一塊代碼的下面給出:

SELECT risk_date_day, 
     ((CAST(Risk1 as decimal(38,2))/CAST(GrandTotal as decimal(38,2))) * 100) FROM DPRAT2_Export 

The result shows 6 numbers after the decimal

我已經嘗試了許多不同的號碼爲十進制的參數(X,X)。我從研究中瞭解到,第二個數字是比例尺,並指定小數點後的位數。我不確定爲什麼結果有6位小數。請幫忙。謝謝!

+1

請用你正在使用的數據庫標記你的佇列。 –

回答

2

執行cast()後的分工:

SELECT risk_date_day, 
     CAST(Risk1 * 100.0/GrandTotal as decimal(38, 2)) 
FROM DPRAT2_Export; 

SQL一般和SQL Server尤其是具有確定在小數數學運算的結果的小數點後的數字很神祕的規則。所以,只需轉換結果。

如果在風險GrandTotal可能是零,我會建議:

SELECT risk_date_day, 
     CAST(Risk1 * 100.0/NULLIF(GrandTotal, 0) as decimal(38, 2)) 
FROM DPRAT2_Export; 

這可以防止除以零錯誤,返回NULL代替。

+0

這兩種方法都只給出了百分比後面跟着2個零的百分比的四捨五入值。例如。 18.00,7.00 ..... 但是,當我使用UPDATE輸入另一個表中的值時,好像我以前的代碼工作。當我使用SELECT顯示它時,它不起作用。奇怪... –

+0

@FariyaFarhad。 。 。一些數據庫做整數除法。如果您正在使用其中一個數據庫,那麼請乘以100.0而不是100。這就是爲什麼您應該正確標記您的問題。 –

+0

乘以100.0工作!謝謝 –