TSQL按特定值排序
问题描述:
我需要对结果进行排序,使状态列为特定值的所有项目首先出现,然后按日期出现。TSQL按特定值排序
我尝试这样做:
SELECT Id, Status, CreatedAt FROM Table
ORDER BY (Status=1) DESC, CreatedAt
我想我会得到一个布尔值(状态= 1)DESC所以下令把真(1)值在顶部。
但我得到一个语法错误。这是可能的,如果是这样,正确的语法是什么?
谢谢!
答
您可以使用CASE
也在ORDER BY
:
SELECT Id, Status, CreatedAt
FROM Table
ORDER BY
CASE WHEN Status = 1 THEN 0 ELSE 1 END ASC,
CreatedAt ASC
答
试试这个
SELECT Id, Status, CreatedAt FROM Table
ORDER BY (case when Status=1 then 1 else 2 end), CreatedAt
非常感谢,我想这可能是ORDER BY CASE但在此之前从未使用过它,另一我读过的东西似乎并不完全适合。真棒! – Shane 2013-03-26 16:23:37