Простая математическая операция SQL дает неверные результаты - PullRequest
2 голосов
/ 29 марта 2012

У меня проблема с простой математической операцией SQL: qty * price возвращает неверное значение.

Это SQL-сервер 2005. Совместимость установлена ​​на 80 для SQL-сервера 2000.

Любая помощь в понимании, почему у меня возникла проблема, показанная ниже

Например:
Таблица транзакций:

  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 Ответ

4 голосов
/ 29 марта 2012

Ваша цена где-то округляется. Выбранный вами вариант не показывает действительную цену.

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

Результат:

price    total
0.10     4.80000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...