2013-03-26 101 views
2

我需要对结果进行排序,使状态列为特定值的所有项目首先出现,然后按日期出现。TSQL按特定值排序

我尝试这样做:

SELECT Id, Status, CreatedAt FROM Table 
ORDER BY (Status=1) DESC, CreatedAt 

我想我会得到一个布尔值(状态= 1)DESC所以下令把真(1)值在顶部。

但我得到一个语法错误。这是可能的,如果是这样,正确的语法是什么?

谢谢!

回答

10

您可以使用CASE也在ORDER BY

SELECT Id, Status, CreatedAt 
FROM Table 
ORDER BY 
    CASE WHEN Status = 1 THEN 0 ELSE 1 END ASC, 
    CreatedAt ASC 
+0

非常感谢,我想这可能是ORDER BY CASE但在此之前从未使用过它,另一我读过的东西似乎并不完全适合。真棒! – Shane 2013-03-26 16:23:37

3

试试这个

SELECT Id, Status, CreatedAt FROM Table 
ORDER BY (case when Status=1 then 1 else 2 end), CreatedAt