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

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top