SQL Server: come ordinare per data, se la data è < GetDate ()
-
10-07-2019 - |
Domanda
Eccone uno interessante ... spero di poterlo spiegare bene ...
Ho una raccolta di competizioni in una singola tabella nel mio database SQL Server. Sto facendo una ricerca a testo completo su di essi, che funziona benissimo. Tuttavia, alcune delle competizioni sono chiuse e desidero che queste composizioni chiuse vengano visualizzate dopo quelle aperte, pur rispettando il grado ottenuto dalla ricerca a testo integrale.
Quindi se avessi un po 'di IsOpen, li avrei ordinati per
ORDER BY IsOpen DESC, KEY_TBL.Rank DESC
Ora il problema è che non ho un campo bit IsOpen. Invece, ho un campo ClosedDate, che è un datetime.
Quindi quello che devo davvero fare è qualcosa di simile:
ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC
Qualcuno sa come farlo?
Qualsiasi idea sarebbe fantastica! Grazie in anticipo.
-EV
Soluzione
ORDER BY
CASE
WHEN (ClosingDate < GetDate())
THEN 1
ELSE 0
END ASC,
KEY_TBL.Rank DESC
Altri suggerimenti
aggiungi (ClosingDate < GetDate ()) ai campi SELEZIONATI e ordina per quel campo
select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo
eventualmente aggiungere (ClosingDate < GetDate ()) non sarà accettato, quindi dovrai usare IF (aggiungi (ClosingDate < GetDate ()); 1; 0)
Non conosco la sintassi di quella funzione IF a memoria, cercala!