Я бы обычно использовал популярный оператор if-else в java, но в sqlplus я использую случай в выражении select, чтобы запросить условное утверждение, которое я здесь ниже.Вопрос в вопросе о выпуске Select?
select title, to_char(nvl2(((retail-cost)/cost)*100,
((retail-cost)/cost)*100,
((retail-cost)/cost)*100), '99999.99') "Margin",
to_char(discount, '99999.99') "Discount",
(case when ("Margin" >= 60) then 'Very High Profit'
when ("Margin" >= 30) then 'High Profit'
else ("Margin" >= 0) then 'Loss Leader'
end) "Pricing Structure"
from books
order by title;
Я надеялся получить что-то подобное в качестве своего результата, но я попытался переместить заказ; Я все еще застрял с ошибкой каждый раз.
TITLE Margin Discount Pricing Structure
------------------------------ -------- --------- ---------------------------------
BIG BEAR AND LITTLE DOVE 68.23 Very high profit
BODYBUILD IN 10 MINUTES A DAY 65.07 Very high profit
Это неправильный способ сделать это - трудно писать, читать и поддерживать. Вместо этого должна быть небольшая таблица с порогом для каждой «Структуры ценообразования» и ее описания; вычислите только маржу в своем запросе и присоединитесь к этой маленькой таблице. Таким образом, вы можете легко добавлять или удалять уровни, изменять пороговые значения и/или изменять описания. – mathguy