SQL Server 通过预定义顺序进行排序

标签 sql sql-server sql-order-by

我有一个简单的订单查询:

SELECT
    ROW_NUMBER() OVER(ORDER BY flagid desc ) as RowNr,
    stepid, flagid
FROM
(
select stepid, flagid
from opstep_flag
where stepid = 262677032
) a

它返回这样的数据:

enter image description here

是否可以订购 flagid 为例如 7,5,8 的数据?

我想在某个地方定义 flagid 7 是第一个, flagid 5 是第二个, flagid 8 是第三个。现在我只能用 asc 或 desc 更改顺序,5,7,8 我可以更改为 8,7,5。但我需要 7、5、8。

最佳答案

使用 ORDER BYCASE表达式如下:

 ORDER BY (CASE flagid WHEN 7 THEN 1 WHEN 5 THEN 2 WHEN 8 THEN 3 ELSE 4 END)

关于SQL Server 通过预定义顺序进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56275138/

相关文章:

c# - 如何给SqlCommand 添加参数?

mysql - 除了其中一个之外,如何按时间戳对结果进行排序?

SQL ORDER BY 语句逻辑问题

sql - "Invalid column name",按子查询别名排序

java - 如何将字符串数组动态传递给 Java 中的 SQL "IN"子句?

sql - 选择Blob返回一个函数

mysql - 我应该将哪一列作为主键?

MYSQL 查询获取非空列名

sql - SQL Server T-SQL 中的 REGEXP_LIKE 转换

sql - SQL Server 2008中使用Date函数进行计算