質問

これは興味深いものです...私がそれをうまく説明できることを願っています...

SQL Server DBの単一のテーブルに競合のコレクションがあります。私はそれらに対して全文検索を行っていますが、うまくいきます。ただし、一部のコンペティションは終了しており、全文検索で得られるランクを引き続き尊重しながら、オープンコンプの後にこれらのクローズドコンプが表示されるようにします。

したがって、IsOpenビットフィールドを持っている場合は、それらを注文します

ORDER BY IsOpen DESC, KEY_TBL.Rank DESC

問題は、IsOpenビットフィールドがないことです。代わりに、日時であるClosedDateフィールドがあります。

だから私が本当にする必要があるのは次のようなものです:

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

誰でもこれを行う方法を知っていますか?

どんなアイデアも素晴らしいでしょう!事前に感謝します。

-Ev

役に立ちましたか?

解決

ORDER BY
  CASE
    WHEN (ClosingDate < GetDate())
    THEN 1
    ELSE 0
  END ASC,
  KEY_TBL.Rank DESC

他のヒント

選択したフィールドに(ClosingDate&lt; GetDate())を追加し、そのフィールドで並べ替えます

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

追加(ClosingDate&lt; GetDate())は受け入れられないため、使用する必要があります      IF(add(ClosingDate&lt; GetDate()); 1; 0)

IF関数の構文がわからないので、調べてください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top