Я пытаюсь улучшить следующий оператор CASE, чтобы вычислить разницу только один раз.Я делаю это, чтобы избежать отрицательных чисел:
SELECT (CASE WHEN ((SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers)) > 0)
THEN (SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers))
ELSE (0)
END)
Это не только выглядит глупо, но и не является поточно-ориентированным.Я попробовал следующее, но получаю сообщение об ошибке «Недопустимое имя столбца diff».
SELECT (CASE WHEN ((SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers) as diff) > 0)
THEN (diff)
ELSE (0)
END)
Как это можно упростить?Есть ли встроенная функция SQL, которая уже выполняет эту работу?
EDIT: Извините, забыл упомянуть, что оператор select находится внутри объявления представления, поэтому я не могу объявлять переменные.