T-SQL ORDER BY 自定义排序

Ran*_*Kay 0 t-sql sql-server

ID 在范围内(-12 到 700,没有 0)。

我想输出一个按 ID 排序的表,ID 为 1 到 700,然后是 -1 到 -12。

避免处理联合并将集合分割为 >0 和 <0,有没有办法像我想要的那样对其进行排序?

use*_*983 5

几个CASE表达式会这样做:

ORDER BY CASE WHEN YourColumn > 0 THEN 1 ELSE 2 END ASC,
         CASE WHEN YourColumn > 0 THEN YourColumn END ASC,
         YourColumn DESC; --As already inferred it is now less than 0
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴