SQL Server: cómo ordenar por fecha, si la fecha es < Obtener la fecha()
-
10-07-2019 - |
Pregunta
Aquí hay una interesante ... espero poder explicarlo bien ...
Tengo una colección de concursos en una sola tabla en mi SQL Server DB. Estoy haciendo una búsqueda de texto completo sobre ellos, lo que funciona bien. Sin embargo, algunas de las competiciones están cerradas, y quiero que estas composiciones cerradas aparezcan después de las composiciones abiertas, sin dejar de respetar el rango que obtenemos de la búsqueda de texto completo.
Entonces, si tuviera un campo de bits IsOpen, los ordenaría por
ORDER BY IsOpen DESC, KEY_TBL.Rank DESC
Ahora el problema es que no tengo un campo de bit IsOpen. En cambio, tengo un campo ClosedDate, que es una fecha y hora.
Entonces, lo que realmente necesito hacer es algo como:
ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC
¿Alguien sabe cómo hacer esto?
¡Cualquier idea sería genial! Gracias de antemano.
-Ev
Solución
ORDER BY
CASE
WHEN (ClosingDate < GetDate())
THEN 1
ELSE 0
END ASC,
KEY_TBL.Rank DESC
Otros consejos
agregue (ClosingDate < GetDate ()) a los campos SELECCIONADOS y ordene por ese campo
select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo
posiblemente agregar (ClosingDate < GetDate ()) no será aceptado, entonces deberá usar IF (add (ClosingDate < GetDate ()); 1; 0)
No sé la sintaxis de esa función IF de memoria, ¡búsquela!