小编典典

此SQL Server查询除法计算有什么问题?

sql

我在SQL Server 2008 R2数据库上具有以下表结构:

  CREATE TABLE FormTest
(   
clientid char(10),
DateSelected date,
A int,
B int,
C int
)

我在表格FormTest中填写了以下信息

clientid        DateSelected      A       B     C
x1              2006-06-09     65150    4921    1
x2              2006-05-05     155926   69092   1
x3              2006-01-20     95603    156892  1
x4              2006-01-20     30704    164741  1
x4              2006-02-03     65150    174834  1
x5              2006-04-28     59629    4921    1
x6              2006-01-27     30704    162356  1
x7              2006-06-30     65150    4921    1
x8              2006-07-10     65150    4921    1

最后,我运行此sql查询:

SELECT clientid, (((a+ b + c) / 3) / 216647 * 10) AS Formula1 
    From FormTest

但是后来我得到了这些结果:

clientid        Formula1      
x1              0
x2              0
x3              0
x4              0
x4              0
x5              0
x6              0
x7              0
x8              0

有人可以告诉我我在做什么错吗?


阅读 180

收藏
2021-05-05

共1个答案

小编典典

这是因为您正在执行整数除法。您应使用以下方法将其中一个操作数转换为浮点数或十进制(取决于您进行的计算的精度和目的):

((CAST((a+ b + c) AS FLOAT) / 3) / 216647 * 10)

或可能:

(((a+ b + c) / 3.0) / 216647.0 * 10)
2021-05-05