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

Тема в разделе "SQL", создана пользователем vanillavera, 21 июл 2010.

  1. vanillavera

    vanillavera Гость

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

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

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

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

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Это ж где такой дурной синтаксис придумали.. Вы там слово Limit или Where не пропустили?

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

    vanillavera Гость


    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
     
  4. kds-service

    kds-service New Member

    Регистрация:
    10 окт 2015
    Сообщения:
    3
    Симпатии:
    0
    SELECT access.SUMPROD, access.SUMDOG,
    case when Coalesce( SUMDOG,0)=0 then 0
    else (SUMPROD-SUMDOG)/SUMDOG end
    FROM access access

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

Поделиться этой страницей