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