Oracle SQL Сервер - сортировка / порядок сортировки переменных в выражении - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь отсортировать список по тому, как написано утверждение, например:

select state, count(*)
    from some_tbl
    where state = 'WA'
    or zip = 90210
    or city = 'Salt Lake City'

(извините за плохой пример)

Я хотел бы заказать где WA находится сверху, CA занимает второе место в списке (индекс в CA в 90210), а UT (Солт-Лейк-Сити в UT) появляется последним.

Итак,

WA  
CA  
UT 

Is есть способ отсортировать заказ по тому, как я написал запрос?

Ответы [ 3 ]

0 голосов
/ 18 марта 2020

В ответе Гордону я бы переписал его как

order by case when state='WA' then 1
              when state='CA' then 2
              when state='OH' then 3
          end
0 голосов
/ 18 марта 2020

decode() пригодится для сокращения выражения:

order by decode(state, 'WA', 1, 'CA', 2, 'UT', 3)
0 голосов
/ 18 марта 2020

Вы можете использовать выражение case:

order by (case when state = 'WA' then 1
               when zip = '90210' then 2
               else 3
          end)
...