2017-08-02 42 views
0

我有這個表,我將用隨機數字填充:和除數返回0

|--week--||-2016-||-2017-| 
| 1  || 26734||6314916| 
| 2  || 64565||9876768| 
| 3  || 32243||9976757| 

我想要做的就是創建一個第四列,基本上是這些數字的方差什麼。 我創建的腳本下面我知道工作,因爲我從另一個表創建它,這些表除了他們的數字之外沒有區別。

select CAST(ROUND(sum (([2017]) /(([2016]))-1)*100, 0) as NUMERIC(36,0)) as [variance%] 

從表2

我得到以下

|--week--||-2016-||-2017-| variance% 
| 1  || 26734||6314916|0 
| 2  || 64565||9876768|0 
| 3  || 32243||9976757|0 

爲什麼會出現零當其他表,我有能夠爲變化的實際效果?

+2

使用'[2017] * 1.0'而不是僅僅是[2017]' – Lamak

+1

_Why_>因爲你在做整數運算。首先將整數列轉換或轉換爲浮點數或小數類型。 –

+1

[如何通過除以兩個整數值獲得浮點數結果?]可能的重複(https://stackoverflow.com/questions/11719044/how-to-get-a-float-result-by-dividing-two-integer - 值) – scsimon

回答

1

您所需要做的就是將您的INT模型化爲浮點值。像這樣的東西:

select 
CAST(ROUND(sum (([2017]*1.0) /(([2016]))-1)*100, 0) as NUMERIC(36,0)) as [variance%] 

閱讀this stack exchange回答瞭解更多關於此。