• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы vanillavera
  • Дата начала
V

vanillavera

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

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

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

но как? мои познания в SQL скудны и поверхностны
 
V

vital

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

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

vanillavera

Это ж где такой дурной синтаксис придумали.. Вы там слово 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
 
K

kds-service

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

Где то так, мог опечататься но не ошибиться..
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!