Commande personnalisée dans Oracle SQL
Je dois commander de transaction sur la base de la monnaie.
Cependant j'ai besoin de mettre en œuvre une commande personnalisée, ce qui rend la paire USD pour toujours vient sur le dessus, et le reste doit être commandé asc.
par exemple :
- BHT
- USD
- MYR
- JYP
doivent être classés comme :
- USD
- BHT
- JPY
- MYR
Est-il un moyen simple de gérer cela?
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si cela est admissible à titre de simple:
ou un peu plus compact, mais Oracle spécifiques:
La solution ci-dessus en utilisant des nombres pour définir l'ordre de tri ne sera pas automatiquement de sorte monnaies correctement qui ne sont pas mentionnées dans le cas/décoder l'expression.
Simple de mettre USD à l'avant et ne se soucient pas du reste, le "produit" des critères d'ordre doit être une valeur de caractère ainsi. Vous pouvez utiliser la commande suivante dans ce cas:
Qui utilise une "alphabétique" de la commande. Cela fonctionne parce que les personnages sont triés d'après les chiffres. (À l'aide de
'AAA'
au lieu de'001'
fonctionnerait tout aussi bien).À assurez-vous que Votre sort est "souple" et fonctionne avec toutes les monnaies ce faire:
Plus détaillée de la façon de faire cela, si vous êtes intéressant dans le tri de certaines valeurs au début ou à la fin, mais ces triés dans leur groupe:
Cela mettra l'USD et CAD en haut de la liste (triée), ZWD et HTG au fond, et le reste triés entre ceux-ci.
Peut-être que ce sera vous aider à:
ou à l'aide de
case
Une variante de plus, avec regexp comme la fonction
FIELD()
dans MySQL:Vous pouvez effectuer les opérations suivantes:
J'avais besoin de faire la même chose, mais avec plusieurs colonnes, et a trouvé Grzegorz W la réponse de la meilleure pour cela, à la suite d'une simple addition: