sql - 这个SQL Server查询除法计算有什么问题?

标签 sql sql-server sql-server-2008

我在 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

谁能告诉我我做错了什么?

最佳答案

因为你在做整数除法。您应该将其中一个操作数转换为 float 或小数(取决于您正在进行的计算的精度和目的),使用如下内容:

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

或者可能:

(((a+ b + c) / 3.0) / 216647.0 * 10)

关于sql - 这个SQL Server查询除法计算有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112462/

相关文章:

sql - 如何在SQL中用单引号连接列值?

sql - AND子句无法在配置单元中使用

sql-server - SQL Server SELECT INTO 和临时表阻塞

mysql - 添加 column_name != 3 返回的结果要少得多

python - Sqlalchemy,python,用数据填充数据库的最简单方法

sql-server-2008 - 将 INT 转换为 VARCHAR

sql - 数据库表名 : Plural or Singular

sql - 按组保留左表

sql-server - 手持式开发、Lazarus 或 Turbo Delphi.Net

sql-server - 如何在 MS SQL-Server 上查找具有特殊字符(如 'José')的名称