Всегда показывать самое высокое значение при сортировке - PullRequest
0 голосов
/ 27 марта 2019

У меня, Oracle, у меня есть таблица со следующими значениями

1
2
4
10

Я всегда хочу, чтобы 2 отображал наибольшее значение после всех других значений в порядке DESCending, как показано ниже:

2
10
4
1

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

Вы можете order by значение, которое вы строите с помощью case; например:

with tab(col) as (
    select  1 from dual union all
    select  2 from dual union all
    select  4 from dual union all
    select 10 from dual 
)    
select col
from tab
order by case when col = 2 then 1 else 2 end asc,
      col desc

дает:

       COL
----------
         2
        10
         4
         1
0 голосов
/ 27 марта 2019

попробуйте как показано ниже, если столбец не нулевой

with tab(col) as (
    select  1 from dual union all
    select  2 from dual union all
    select  4 from dual union all
    select 10 from dual 
)    
select col
from tab
ORDER BY NULLIF(col, 2) desc NULLS FIRST 

выход

COL
2
10
4
1

демонстрационная ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...