2013-03-26 6 views
2

Мне нужно заказать мои результаты таким образом, чтобы все элементы со столбцом состояния были конкретным значением, первым, а затем по дате.TSQL Order By Specific Value

Я попытался это:

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

я решил получить булево значение на (Status = 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 ДЕЛУ, но никогда не использовал его раньше, а другой материал, который я читал, по-видимому, точно не подходит. Потрясающие! – Shane

3

Попробуйте

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