2013-05-29 6 views
0

У меня есть сценарий SQL, который вычисляет скидку для элементов, в то время как в настоящее время я могу сделать расчет просто отлично я бегу в проблему для центов в ценеЦена Округление до ближайшего 5с

у меня есть элемент, который составляет $ 9,95, скидка на это составляет 50%, так что новая цена составляет 4,975 доллара США, так как цены в магазине должны иметь точность 2, стоимость составит 4,97 доллара США (в соответствии с политикой, минимальные цены должны быть снижены)

проблема в том, что стоимость неверна, так как цены на сайте должны соответствовать тому, что находится в магазине, и поскольку в Австралии наименьшее изменение составляет 5 центов, цена должна быть кратной тому, что кассир не может дать клиенту 1 - Изменение цен на 4 цента ле будут жаловаться, если они покупают товар в Интернете, который был дисконтируются до $ 4,97, а в магазине она стоит $ 4,95 (да, люди, которые разборчивы)

есть способ округлить до ближайших 5 или 0

+0

Что вы yabbering о чем? В нашей огромной земле, вы обычно покупаете онлайн только кредитные/дебетовые карты, и они вполне способны совершать транзакции на суб-5c resoultion. На самом деле, если вы купите что-то (например) Woolies за 14,99 $ с помощью карты, это то, что вам нужно. Только когда вы платите наличными, округление вступает в силу, и я не уверен, как вы это делаете в Интернете. В магазине также должно быть 4,97. – paxdiablo

+0

@paxdiablo Я хорошо осведомлен об этом, я тоже австралиец, однако на сайте на сайте есть тот же список, что и на самом деле в магазине, поэтому сколько человек будет платить в магазине наличными, должно быть одинаковым на сайте, дисконтирование на счетчиков делает эту коррекцию, даже если покупатель использует карточку, поэтому я должен делать то же самое на сайте .... повезло, это относится только к скидкам на процент, поскольку все в магазине обычно оценивается по цене либо 0 или 5 –

ответ

2

это будет работать для тебя?

SELECT floor(price_after_discount * 20)/20 AS price FROM table 
+0

да, это сработало, спасибо –

1

В SQL Server я могу сделать:

select 
    Val, 
    FLOOR(val) + 
     CASE 
      WHEN (val * 100)%100 >= 50 THEN 0.05 
      ELSE 0 
     END Rounded_Val 
from #Test 

enter image description here

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