我通常会在java中使用流行的if-else语句,但在sqlplus中,我在select语句中使用case来查询下面的条件语句。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