2013-03-26 106 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