ОБСУЖДЕНИЕ

правильно написать запрос исключив деление на ноль

3 ответов 8 тыс.
Автор темы
Всем здравствуйте!
подскажите, пожалуйста, кто знает, как правильно написать запрос?
нужно вывести поле наценка, как результат от деления (продажи-продажи в договорных ценах)/продажи в договорных ценах
проблема в том, что договорной цены может и не быть
как написать, чтобы в случае возникновения ошибки деления на ноль в поле выводился ноль?
изначально , скажем запрос такой

SELECT access.SUMPROD, access.SUMDOG, (SUMPROD-SUMDOG)/SUMDOG
FROM access access

теоретически понимаю, что здесь нужно использовать is null или case

но как? мои познания в SQL скудны и поверхностны
 
SELECT access.SUMPROD, access.SUMDOG, (SUMPROD-SUMDOG)/SUMDOG
Это ж где такой дурной синтаксис придумали.. Вы там слово Limit или Where не пропустили?

Добавлено: пс. А что бы проверить на 0, проще if использовать.
 
Это ж где такой дурной синтаксис придумали.. Вы там слово Limit или Where не пропустили?

Добавлено: пс. А что бы проверить на 0, проще if использовать.


SELECT access.SUMPROD, access.SUMDOG,
case when isnull(SUMDOG;0)=0 then 0 else (SUMPROD-SUMDOG)/SUMDOG end
FROM access access


запрос пишу в MS Query
выдает
Не требовалось 'isnull' после списка столбцов в предложении SELECT
 
SELECT access.SUMPROD, access.SUMDOG,
case when Coalesce( SUMDOG,0)=0 then 0
else (SUMPROD-SUMDOG)/SUMDOG end
FROM access access

Где то так, мог опечататься но не ошибиться..