Для конкретных представленных вами данных и требований вам не нужно выражение case
.(На самом деле я лгу - sign()
это форма case
, конечно.)
Существует двусмысленность, если у вас более одной строки с одинаковой комбинацией code
и положительной qty
или qty = 0
;точно такая же двусмысленность, которую вы оставили открытой с вашей формулировкой проблемы.
with
inputs as (
select 'R' code, 200 qty from dual union all
select 'R' , 0 from dual union all
select 'A' , 100 from dual union all
select 'A' , 0 from dual
)
select *
from inputs
order by sign(qty) desc, code
;
CODE QTY
---- ----
A 100
R 200
A 0
R 0