conditionnelle de la clause order by en sql
J'ai une requête qui doit commander le résultat de l'asc ou desc en fonction d'une valeur de colonne.
par exemple
si l'employé est de type manager existe ALORS commande par joining_date, bith_date ASC
sinon si le salarié est développeur PUIS commande par joining_date, birth_date DESC.
J'aimerais réaliser quelque chose comme ci-dessous, mais ne peut pas l'atteindre.
ORDER BY CASE WHEN employee_type = 'm'
THEN joining_date, birth_date ASC;
WHEN employee_type = 'd'
THEN joining_date, birth_date DESC;
OriginalL'auteur Ram Dutt Shukla | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
Bien j'ai eu la réponse après quelques recherches.
Nous pouvons ajouter plusieurs colonnes dans la clause where conditionnelle comme suit :
Cela permettra de commander le résultat sur la base de employee_type.
DECODE( expression , search , result [, search , result]... [, default] )
. Donc, il serait de comparer employee_type avec un " m " et si cela ne correspond pas, il serait comparer employee_type avec birth_date ???OriginalL'auteur Ram Dutt Shukla
Je soupçonne que vous voulez quelque chose comme ceci:
OriginalL'auteur ypercubeᵀᴹ
La question est un peu pauvre spécifié.
Par une colonne de nombreuses valeurs (comme il y a plusieurs lignes).
Maintenant,
order by
clause d'utiliser une expression et l'ordre des lignes.Cette expression devrait être morphotropic(;))
Donc, en supposant standard d'oracle employé schéma, les gestionnaires sont:
Une solution de contournement requête peut être:
Que exexpresion est le
case
; à l'Aide d'une constante(sous-requête qui décide il y a des gestionnaires), il modifie les valeurs du positif au négatif, c'est, changer l'ordre de la direction.Mise à JOUR: avec les détails dans les commentaires:
Vous devez ajouter un ou deux cas de test à votre question. Mais je vais mettre à jour la réponse avec de nouveaux détails. La réponse sera plus simple.
OriginalL'auteur Florin Ghita
Si il y a un responsable dans l'entreprise cette requête renvoie le plus ancien manager, autrement - le plus jeune développeur.
Fixe.
OriginalL'auteur Egor Skriptunoff