SQL Server: comment commander par date, si la date est < Avoir un rendez-vous()
-
10-07-2019 - |
Question
En voici un intéressant ... j'espère pouvoir l'expliquer correctement ...
J'ai une collection de compétitions dans une seule table dans ma base de données SQL Server. Je fais une recherche en texte intégral dessus, ce qui fonctionne bien. Cependant, certaines des compétitions sont fermées et je souhaite que ces compositions fermées apparaissent après les compétitions ouvertes, tout en respectant le rang obtenu par la recherche en texte intégral.
Donc, si j'avais un peu de code IsOpen, je les commanderais par
ORDER BY IsOpen DESC, KEY_TBL.Rank DESC
Le problème est que je n’ai pas de champ de bits IsOpen. Au lieu de cela, j'ai un champ ClosedDate, qui est un datetime.
Donc, ce que j'ai vraiment besoin de faire, c'est quelque chose comme:
ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC
Quelqu'un sait comment faire cela?
Toutes les idées seraient géniales! Merci d'avance.
-Ev
La solution
ORDER BY
CASE
WHEN (ClosingDate < GetDate())
THEN 1
ELSE 0
END ASC,
KEY_TBL.Rank DESC
Autres conseils
ajoutez (ClosingDate < GetDate ()) aux champs sélectionnés et triez-les par ce champ
select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo
ajouter éventuellement (ClosingDate < GetDate ()) ne sera pas accepté, vous devrez alors utiliser IF (ajoutez (ClosingDate < GetDate ()); 1; 0)
Je ne connais pas la syntaxe de cette fonction SI par cœur, recherchez-la!