2017-08-02 63 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回答了解更多关于此。