sql >> Databáze >  >> RDS >> Oracle

Vlastní objednávka v Oracle SQL

Nevím, jestli to lze považovat za jednoduché:

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

nebo o něco kompaktnější, ale specifické pro Oracle:

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

Výše uvedené řešení, které používá k definování pořadí řazení čísel, nebude automaticky správně třídit měny, které nejsou uvedeny ve výrazu case/decode.

Chcete-li jednoduše umístit USD dopředu a nestarat se o zbytek, "vygenerovaná" kritéria objednávky musí být také hodnotou znaku. V takovém případě můžete použít následující:

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

Který používá "abecední" řazení. To funguje, protože znaky jsou seřazeny podle číslic. (Pomocí 'AAA' místo '001' by fungovalo také).



  1. Nejlepší způsob, jak resetovat sekvenci Oracle na další hodnotu v existujícím sloupci?

  2. Vrátit parametry uložené procedury nebo uživatelem definované funkce na serveru SQL (příklady T-SQL)

  3. Vývojářský nástroj Oracle SQL:Stažení a instalace

  4. Jaký je rozdíl mezi postgres a postgresql_psycopg2 jako databázovým strojem pro django?