SQL Server: как сделать заказ по дате, если дата <GetDate () - PullRequest
1 голос
/ 30 ноября 2009

Вот интересный ... надеюсь, я смогу объяснить это хорошо ...

У меня есть коллекция соревнований в одной таблице в моей БД SQL Server. Я делаю полнотекстовый поиск по ним, который отлично работает. Тем не менее, некоторые соревнования закрыты, и я хочу, чтобы эти закрытые соревнования появлялись после открытых соревнований, сохраняя при этом рейтинг, который мы получаем при полнотекстовом поиске.

Так что, если бы у меня был бит IsOpen, я бы их заказал по

ORDER BY IsOpen DESC, KEY_TBL.Rank DESC

Теперь проблема в том, что у меня нет битового поля IsOpen. Вместо этого у меня есть поле ClosedDate, которое является datetime.

Итак, что мне действительно нужно сделать, это что-то вроде:

ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC

Кто-нибудь знает, как это сделать?

Любые идеи были бы великолепны! Заранее спасибо.

-ев

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009
ORDER BY
  CASE
    WHEN (ClosingDate < GetDate())
    THEN 1
    ELSE 0
  END ASC,
  KEY_TBL.Rank DESC
2 голосов
/ 30 ноября 2009

добавить (ClosingDate

select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo

возможно, добавить (ClosingDate IF (add (ClosingDate

Я не знаю синтаксис этой функции IF наизусть, посмотрите!

...