如何在查询中使用除法函数?

Ada*_*New 8 sql sql-server sql-server-2005 sql-server-2008

我想显示Overshipment列的百分比.

我的示例查询

select (SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q))
from 
CSPGI09_OVERSHIPMENT 
Run Code Online (Sandbox Code Playgroud)

表名 - CSPGI09_OVERSHIPMENT

我的公式:

-------------------------------------------------------
SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T)
-------------------------------------------------------
SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q
Run Code Online (Sandbox Code Playgroud)

我想用%显示结果,例如,66.57%

我正在使用SQL SERVER 2008

Dam*_*ver 14

假设所有这些列都是int,那么首先要解决的是将它们中的一个或多个转换为更好的数据类型 - int除法执行截断,因此任何小于100%的列都会得到0的结果:

select (100.0 * (SPGI09_EARLY_OVER_T – SPGI09_OVER_WK_EARLY_ADJUST_T)) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q)
from 
CSPGI09_OVERSHIPMENT 
Run Code Online (Sandbox Code Playgroud)

在这里,我已经多了一个数字,100.0这将强制计算结果用floats而不是ints完成.通过选择100,我也准备将其视为一个%.

我对你的包围感到有些困惑 - 我想我已经把它弄错了 - 但是你有一个括号围绕单个值,然后在其他地方你有同一级别的运算符(-/)的混合,所以依赖在优先规则上定义首先应用哪个运算符.