我通常會在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