J'ai un algorithme de priorisation complexe que je veux écrire en SQL pour renvoyer des pages de données prioritaires.Commande complexe dans SQL Query: éventuellement en utilisant CASE WHEN
Certains d'entre eux sont hiérarchisés en fonction de valeurs fixes, d'autres sont classés par valeurs variables. à savoir
// Initial sort on ATTR1 (value1/value2 is higher than value3)
if ATTR1 = value1 or value2
then orderBy creationDate, then modifiedDate, then author
else if ATTR1 = value3
then
// if ATTR1 = value3, do secondary sort on ATTR2 (value4 is higher than value5)
if ATTR2 = value4
then orderBy oldPriority, then modifiedDate, then creationDate, then author
if ATTR2 = value5
then orderBy creationDate, then modifiedDate
J'ai eu un oeil à SQL CASE QUAND, mais ne savez pas comment faire ce travail avec le deuxième niveau de comparaison d'attribut.
CASE WHEN est-il un outil approprié pour atteindre cet objectif? Quelqu'un a-t-il des conseils pour gérer les niveaux de complexité supplémentaires?
Merci d'avance!
Je ne suis pas sûr que cela est logique: s'il y a seulement 2 lignes et on a ATTR1 = valeur1 et l'autre a ATTR1 = value3 et ATTR2 = value4, qui devrait être commandé en premier? –
J'ai ajouté quelques commentaires dans ma question originale :) – laura
Excuses, envoyé celui-là trop tôt. Les lignes doivent être priorisées par ATTR1 en premier (dans cet ordre value1, value2, value3) - donc dans votre exemple ATTR1 = value1 viendra en premier. Ensuite, si ATTR1 = valeur 3, passez au tri secondaire – laura