sql >> Database teknologi >  >> RDS >> Oracle

Tilpasset rækkefølge i Oracle SQL

Ved ikke, om dette kvalificeres som simpelt:

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

eller lidt mere kompakt, men Oracle-specifik:

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

Ovenstående løsning, der bruger tal til at definere sorteringsrækkefølgen, vil ikke automatisk sortere valutaer korrekt, som ikke er nævnt i case/decode-udtrykket.

For blot at sætte USD foran og være ligeglad med resten, skal de "genererede" ordrekriterier også være en tegnværdi. Du kan bruge følgende i så fald:

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

Som bruger en "alfabetisk" rækkefølge. Dette virker, fordi tegn er sorteret efter talcifrene. (Ved brug af 'AAA' i stedet for '001' ville også fungere).



  1. Sådan installeres pgAdmin 4 på Ubuntu 20.04/18.04/16.04

  2. SQL Join på null-værdier

  3. 19.3 PDB Luk ORA-65107 ORA-16078

  4. Forespørgsel tilskud til en tabel i postgres