Ошибка деления на ноль при преобразовании запроса «Доступ к SQL Server» - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь преобразовать запрос Access в тот, который работает на сервере SQL. Исходный запрос в Access работает отлично (просто ужасно медленно).

Я лишь немного изменил его, чтобы сделать его совместимым с SQL-сервером вместо Access, например, изменив NOW () на GETDATE (), и мы больше не можем разделять псевдонимы.

Выполнение этого запроса в SQL Server:

SELECT batches.[price-group], 
       [development].verifier, 
       Count([development].company) AS SENT, 
       Sum([order] *- 1)          AS ORDS, 
       Count([development].company) / Sum([order] *- 1) AS PCT 
FROM   [development] 
       INNER JOIN batches 
               ON [development].batch = batches.batch 
WHERE  (( ( [development].[mail-date] ) < Getdate() - 50 )) 
GROUP  BY batches.[price-group], 
          [development].verifier 
HAVING (( ( batches.[price-group] ) = 'pgb' )) 
ORDER  BY batches.[price-group], 
          [development].verifier, 
          Count([development].company) DESC; 

Возвращает эту ошибку:

Сообщение 8134, уровень 16, состояние 1, строка 1: ошибка деления на ноль.

Только реальные изменения, как я уже говорил, в Access мы могли бы сделать это

   [ords] / [sent]            AS PCT 

Буду признателен за любую помощь, я точно не знаю, почему она не работает! Удаление приведенной выше строки работает на сервере SQL без ошибок.

Спасибо!

1 Ответ

2 голосов
/ 06 июня 2019

Использование NULLIF():

   Count([development].company) / NULLIF(Sum([order] * -1), 0) AS PCT 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...