TSQL按特定值排序

时间:2013-03-26 13:53:04

标签: sql-server tsql

我需要订购我的结果,以便状态列为特定值的所有项目首先出现,然后按日期出现。

我试过了:

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

我想我会得到一个bool值(Status = 1),所以DESC命令把true(1)值放在最上面。

但我收到语法错误。这是可能的,如果是的话,正确的语法是什么?

谢谢!

2 个答案:

答案 0 :(得分:12)

您也可以在ORDER BY

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

答案 1 :(得分:4)

试试这个

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