这是一个有趣的...希望我能解释清楚......
我在SQL Server数据库的单个表中有一组竞赛。我正在对它们进行全文搜索,效果很好。然而,一些比赛已经结束,我希望这些封闭的比赛在公开比赛后出现,同时仍然尊重我们从全文搜索中得到的等级。
所以,如果我有一个IsOpen位,我会按
命令ORDER BY IsOpen DESC, KEY_TBL.Rank DESC
现在问题是我没有IsOpen位字段。相反,我有一个ClosedDate字段,这是一个日期时间。
所以我真正需要做的是:
ORDER BY (ClosingDate < GetDate()) ASC, KEY_TBL.Rank DESC
任何人都知道怎么做?
任何想法都会很棒!提前谢谢。
-ev
答案 0 :(得分:2)
将(ClosingDate&lt; GetDate())添加到SELECTed字段并按该字段排序
select ... , add (ClosingDate < GetDate()) as Foo
from ...
where ...
order by foo
可能添加(ClosingDate&lt; GetDate())将不被接受,那么你将不得不使用 IF(add(ClosingDate&lt; GetDate()); 1; 0)
我不知道IF函数的语法,请查阅!
答案 1 :(得分:2)
ORDER BY
CASE
WHEN (ClosingDate < GetDate())
THEN 1
ELSE 0
END ASC,
KEY_TBL.Rank DESC