I ont une procédure stockée qui fait essentiellement quelque chose commeTri des résultats par un char (1) colonne
select top 1 expiryDate, flag, (bunch of other columns)
from someTable
(bunch of joins)
order by expiryDate desc
cette saisira donc le dossier qui expire en dernier. Cela fonctionne pour la plupart des cas, sauf certains enregistrements ont un drapeau qui sont juste un char(1)
. La plupart du temps c'est juste Y
ou N
.
Donc ça va revenir quelque chose comme
2010-12-31 N
2010-10-05 Y
2010-08-05 N
2010-03-01 F
2010-01-31 N
Cela fonctionne, la plupart du temps, mais est-il possible de le commander par la colonne de drapeau ainsi? Donc, je voudrais regrouper les résultats par Y
, puis N
, et F
et tous les autres drapeaux peuvent aller en dernier dans n'importe quel ordre. Je pensais que ce serait juste un ordre par, mais puisque les drapeaux ne sont pas pondérés par la valeur alphabétique, je suis un peu perplexe. (Note: Ce ne sont pas mes tables, je ne sais pas si utiliser les personnages comme ça était une bonne idée ou pas, mais ce n'est pas quelque chose que je peux changer).
Vous voulez briser l'égalité des valeurs cravate de ExpiryDate avec le drapeau? – gbn
@gbn, il est peu probable que expiryDates soit égal (si c'est important), mais oui. Je voudrais que celui marqué "Y" avant l'un des autres. – Brandon
Donc c'est la question: le tri secondaire/tie break? Le TOP 1 donne le dernier expiryDate c'est tout, mais la question met l'accent sur les drapeaux et les groupements – gbn