和除数返回0

时间:2017-08-02 13:32:42

标签: sql-server sum division

我有这张桌子,我将填充随机数字:

|--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%]

来自table2

我得到以下

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

为什么我在另一张表中提供零差异的实际结果时会得到零?

1 个答案:

答案 0 :(得分:1)

您需要做的就是将您的INT塑造成浮动值。像这样:

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

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