Tri personnalisé dans Oracle SQL
Lors du classement des données dans Oracle SQL, il arrive parfois qu'un ordre de tri personnalisé soit nécessaire, comme la priorisation certaines valeurs doivent apparaître en haut. Un scénario courant consiste à donner la priorité à une devise spécifique, telle que l'USD, parmi un mélange de devises.
Pour trier une colonne en fonction d'une priorité personnalisée, les fonctions CASE ou DECODE peuvent être utilisées. Voici comment procéder :
À l'aide de CASE
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
En attribuant des valeurs numériques à chaque devise, le tri donnera la priorité à l'USD d'une valeur de 1, suivi du BHT (2 ), JPY (3) et MYR (4). Toutes les autres devises non spécifiées seront inférieures à la valeur par défaut de 5.
Utilisation de DECODE (spécifique à Oracle)
Une syntaxe plus concise peut être obtenue en utilisant DECODE :
order by DECODE(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Alternative pour les non mentionnés Devises
Si l'ordre de priorité doit inclure des devises non explicitement mentionnées dans l'expression CASE/DECODE, la modification suivante peut être utilisée :
order by CASE when currency = 'USD' then '001' else currency END
Cela attribue une valeur de caractère à USD (« 001 »), assurant son placement en haut, tout en laissant les devises restantes être triées par ordre alphabétique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!