Sql server 返回0的和除数
我将用随机数字填充此表:Sql server 返回0的和除数,sql-server,sum,division,Sql Server,Sum,Division,我将用随机数字填充此表: |--week--||-2016-||-2017-| | 1 || 26734||6314916| | 2 || 64565||9876768| | 3 || 32243||9976757| 我想做的是创建第四列,基本上是这些数字的方差。 我创建了下面的脚本,我知道它的工作原理和我为另一个表创建的脚本一样,除了其中的数字,这些表之间没有区别 select CAST(ROUND(sum (([2017]) /(([2016]))-1)*1
|--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
为什么我的另一个表提供了方差的实际结果,而我却得到了零?您需要做的就是将INT转化为float值。大概是这样的:
select
CAST(ROUND(sum (([2017]*1.0) /(([2016]))-1)*100, 0) as NUMERIC(36,0)) as [variance%]
阅读答案了解更多信息。使用[2017]*1.0,而不仅仅是[2017]Why>,因为你在做整数演算。首先根据需要将整型列转换或强制转换为浮点或十进制类型。的可能重复项