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

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top