2012-03-29 2 views
2

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

Это SQL-сервер 2005. Для совместимости установлено значение 80 для SQL-сервера 2000.

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

Например:
Transaction Таблица:

 
    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 
+4

типы данных столбцов? – deutschZuid

+0

Я с Джеймсом на этом. Сценарий таблицы и опубликовать инструкцию create table. Я бы предположил, что цена должна быть деньгами, и в зависимости от того, что вы продаете, более чем вероятно, что qty должен быть целым. –

ответ

4

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

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

Результат:

price total 
0.10  4.80000 
+0

@all_posts Вы все были в порядке. Я действительно стараюсь лучше анализировать, прежде чем отправлять сообщения. Я был в хрусте времени, и это всегда самая маленькая вещь, которая вас позовут. Читая мой стол и sql, чтобы иметь возможность отправлять сообщения, столбец цены был отлит (цена как десятичная (5,2)), и я подумал, что не в моей математической цене *. Спасибо за сообщения, и жаль, что задал вопрос, который я должен был поймать в первую очередь. Мне говорили давным-давно, когда вы пытаетесь обвинить компилятор, укажете пальцем на себя ... – Jdunn5

Смежные вопросы