J'ai une table qui doit être triée en fonction de deux colonnes de nombres (appelons-les Colonne X et Colonne Y). Dans chaque ligne, les deux colonnes peuvent avoir des valeurs numériques (dans ce cas, X < = Y), ou l'une des colonnes peut être NULL.SQL: ORDER BY basé sur deux colonnes de valeurs entrelacées
données Exemple:
X Y
----- -----
... NULL 26
... 31 NULL
... 1 7
... 39 46
... NULL 36
... 15 16
... NULL 14
... 23 29
Je voudrais trier ces données afin que les colonnes entrelacer « correctement ». Plus précisément:
1) Si la valeur de X est présente dans les deux rangées, afin basées sur X.
2) Sinon, si la valeur Y est présent dans les deux rangées, sur la base de l'ordre Y.
3) Sinon, comparez la valeur X disponible et la valeur Y disponible.
Le "correct" tri des données d'exemple serait:
X Y
----- -----
... 1 7
... NULL 14
... 15 16
... NULL 26
... 23 29
... 31 NULL
... NULL 36
... 39 46
est-il un moyen simple d'effectuer ce tri, dans une clause ORDER BY?
Où placeriez-vous '... 25 NULL'? –
Il irait entre 23/29 et 31/NULL. La priorité est toujours donnée au tri par la colonne X si la colonne est remplie dans les deux lignes. Pour clarifier: L'objectif est de finir avec les valeurs de chacune des deux colonnes triées par rapport aux autres valeurs de cette colonne. Pour des raisons évidentes, cela est toujours possible sur la colonne X, et il est généralement possible de se "fermer" avec la colonne Y - Considérons 25/27; il faudrait aller après 23/29, même si cela causerait un petit désordre dans la colonne Y. – VeeArr