Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zamówienie niestandardowe w Oracle SQL

Nie wiem, czy to kwalifikuje się jako proste:

order by 
    case 
       when currency = 'USD' then 1 
       when currency = 'BHT' then 2
       when currency = 'JPY' then 3
       when currency = 'MYR' then 4
       else 5
    end

lub nieco bardziej kompaktowy, ale specyficzny dla Oracle:

order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)

Powyższe rozwiązanie wykorzystujące liczby do zdefiniowania kolejności sortowania nie spowoduje automatycznego prawidłowego sortowania walut, które nie są wymienione w wyrażeniu sprawy/dekodowania.

Aby po prostu umieścić USD na początku i nie przejmować się resztą, „wygenerowane” kryteria zamówienia również muszą być wartością znakową. W takim przypadku możesz użyć następującego:

order by 
    case 
       when currency = 'USD' then '001' 
       else currency
    end

Który używa kolejności „alfabetycznej”. Działa to, ponieważ znaki są sortowane po cyfrach. (Używając 'AAA' zamiast '001' również zadziała).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować Oracle SQL Developer 18.2 w systemie Windows 10?

  2. 4 sposoby formatowania liczby bez ułamków dziesiętnych w Oracle

  3. Nowe terminy bezpłatnych egzaminów certyfikacyjnych w Oracle Cloud i Autonomous Database

  4. Co oznacza symbol SQL Select || oznaczać?

  5. SQL Server 2016 w systemie Linux