简单的SQL数学运算会产生错误的结果

时间:2012-03-29 02:36:52

标签: sql sql-server tsql sql-server-2005

我遇到一个问题,qty * price的简单SQL数学运算返回的值不正确。

这是SQL Server 2005.对于2000 SQL Server,兼容性设置为80。

任何有助于理解我遇到问题的原因

例如:
交易表:

  id     price   qty
  1      2.77    20.00
  1      2.77    25.00
  1      2.77    10.00
  2      0.10    50.00
  2      0.10    80.00
  3      0.10    50.00
  3      0.10    60.00

SQL

Select id, price, qty, (qty * price) from transact

实际问题是这个,这是我的错:(

Select id, CAST(price AS DECIMAL(5,2)), qty, (qty * price) from transact

返回以下内容:

  id  price  qty    Total
  1   2.77   20.00   55.400000    Correct
  1   2.77   25.00   69.250000    Correct
  1   2.77   10.00   27.700000    Correct
  2   0.10   50.00    4.800000    Should be 5.0000
  2   0.10   80.00    7.680000    Should be 8.0000
  2   0.10   50.00    5.050000    Should be 5.0000
  2   0.10   60.00    6.060000    Should be 6.0000
  3   39.00   1.00   39.000000    Correct
  3   39.00   2.00   78.000000    Correct
  3   39.00   3.00  117.000000    Correct

1 个答案:

答案 0 :(得分:4)

你的价格正在某处。您正在运行的选择未显示实际价格。

select round(0.096, 2) price, 0.096 * 50.00 total

结果:

price    total
0.10     4.80000