和除数返回 0

sum divisor returning 0

我有这个 table,我将用随机数字填充它:

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

我想做的是创建第四列,它基本上是这些数字的变化。 我创建了下面的脚本,我知道它的工作原理与我为另一个 table 创建的脚本相同,除了其中的数字之外,这些 table 之间没有区别。

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

来自 table2

我得到以下

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

为什么我得到的是零,而另一个 table 我已经提供了实际的差异结果?

您需要做的就是将您的 INT 转换为浮点值。像这样:

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

阅读 this stack exchange 答案以了解更多信息。