Дескриптор «Ошибка деления на ноль» - PullRequest
4 голосов
/ 04 августа 2011
    SELECT   ((CASE WHEN (qid2.AgeBelow_16 - qid1.AgeBelow_16)= 0 THEN 1 ELSE (qid2.AgeBelow_16- qid1.AgeBelow_16) END )/ (CASE WHEN [qid1].AgeBelow_16= 0 THEN 1 ELSE [qid1].AgeBelow_16  END))*100 AS AgeBelow_16_Percent, 
    -- otherfields

    FROM
    -- whole query

Я использую приведенный выше запрос для расчета процентной разницы от старого значения и нового значения. основная проблема в том, что 0 , если какое-либо значение поля 0, тогда выдается «Делить на ноль ошибка, обнаруженная ошибка», поэтому я использую случай, когда тогда еще заканчивается . Это реализация выше, или ее можно написать лучше, чем это, пожалуйста, предложите мне, потому что это больше путаницы, когда поля огромные, как выше 10.

1 Ответ

4 голосов
/ 04 августа 2011

Что-то вроде этого возможно?

declare @X int = 0
select 10 / isnull(nullif(@X, 0), 1)
...