Как оптимизировать ниже SQL-запрос - PullRequest
0 голосов
/ 07 мая 2019

У меня есть внутреннее ограничение, что столбец Resultant десятичного типа (aban) может содержать не более 1000 символов в формуле.

Как оптимизировать этот запрос?

Я пытался использовать tempTable, но результаты не такие, как ожидалось.

aban = 
CASE 
WHEN ( 
    sum(isnull(a.callshandled,0)) + sum(isnull(a.totalcallsaband,0)) + sum(isnull(a.incompletecalls,0)) + sum(isnull(a.returnbusy,0)) + sum(isnull(a.returnring,0)) + sum(isnull(a.icrdefaultrouted,0)) + sum(isnull(a.ndr,0)) + sum(isnull(a.overflowout,0)) + sum(isnull(a.callsrona,0)) + sum(isnull(a.returnrelease,0)) + sum(isnull(a.callsroutednonagent,0)) + sum(isnull(a.shortcalls,0)) + sum(isnull(a.agenterrorcount,0)) + sum(isnull(a.errorcount,0))
  ) 
  = 0 THEN 
  0 
  ELSE (sum(isnull(a.totalcallsaband,0)) * 1.0) / (sum(isnull(a.callshandled,0)) + sum(isnull(a.totalcallsaband,0)) + sum(isnull(a.incompletecalls,0)) + sum(isnull(a.returnbusy,0)) + sum(isnull(a.returnring,0)) + sum(isnull(a.icrdefaultrouted,0)) + sum(isnull(a.networkdefaultrouted,0)) + sum(isnull(a.overflowout,0)) + sum(isnull(a.callsrona,0)) + sum(isnull(a.returnrelease,0)) + sum(isnull(a.callsroutednonagent,0)) + sum(isnull(a.shortcalls,0)) + sum(isnull(a.agenterrorcount,0)) + sum(isnull(a.errorcount,0)))
END 
,

Оптимизируйте запрос таким образом, чтобы количество символов в формуле было меньше 1000, а результирующий столбец должен иметь одинаковое значение до и после оптимизации запроса.

1 Ответ

0 голосов
/ 07 мая 2019

Пожалуйста, попробуйте так:

DECLARE @dividend int  = 10;
DECLARE @divisor int  = 0;

SELECT COALESCE(@dividend / NULLIF(@divisor,0), 0);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...