如何按大于0的列然后按日期排序

Mat*_*ias 0 sql sql-server ssms

假设我有一个名为Car的表,其中包含Age和CreationDate列.

我现在想要订购,以便所有年龄大于0的汽车先排序,然后按creationDate按降序排序.因此,如果汽车的年龄是4,6,7例如只是它是大于0.这意味着,基本上所有行通过CreationDate排序,除了所有的汽车行驶的年龄大于0是没关系排序第一.

例如,下面的代码不起作用,因为汽车首先按年龄排序,并忽略实际的CreationDate.(我不想反转它并首先使用CreationDate,因为那时年龄> 0的汽车不会首先列出).

SELECT * FROM Car ORDER BY Age, CreationDate DESC
Run Code Online (Sandbox Code Playgroud)

任何帮助或输入都非常感谢,谢谢!

Lam*_*mak 5

您可以使用CASE表达式:

SELECT *
FROM Car
ORDER BY CASE WHEN Age > 0 THEN 1 ELSE 2 END,
         CreationDesc DESC
;
Run Code Online (Sandbox Code Playgroud)