2016-05-23 28 views
0

我想以百分比顯示此分部。如何在除以2的整數時在TSQL中獲得百分比?

SELECT a * 100/b 
FROM myTable 
WHERE condition 

在此,例如,一個= 170B = 288a/b = 0.590277777778

我想返回59,02。我得到的只是59。如何獲得這兩個部分?

+2

播放介紹一個小數,例如'選擇170 * 100.0/288'來避免你看到的整數運算。 –

+0

'100.0'正在返回'59.0277777777779' – Richard77

+0

是的。如果你想要2dp'select cast(170 * 100.0/288作爲十進制(5,2))',或者如果你想把值作爲一個字符串使用'str()' –

回答

3

Sql Server只能看到整型參數並返回整型結果。使兩個第一參數數字/十進制

select a * 100./b 

select cast(cast(a as decimal(18,4)) * 100/b as decimal(18,2)) 

一個這不會幫助:

select a/b*100. 

,因爲操作的順序,第一opeation(部門)仍然是整數。

測試用例

declare @a int=170, 
     @b int=288; 

select cast(@a as decimal)*100/@b --59.02777777777 
     , @a*100./@b --59.02777777777 
     , cast (@a*100./@b as decimal(18,2)) --59.03 
+0

我會建議float是一個糟糕的選擇。 float數據類型是一個近似的數據類型,而不是一個確切的數據類型。因此,並非所有的值都可以存儲在浮點數中。當你進行分工時,這真的很明顯。 –

+0

有沒有辦法選擇點後的數字位數? – Richard77

+0

根據需要查看更新後的答案。 – Serg