我有一个简单的订单查询:
SELECT
ROW_NUMBER() OVER(ORDER BY flagid desc ) as RowNr,
stepid, flagid
FROM
(
select stepid, flagid
from opstep_flag
where stepid = 262677032
) a
它返回这样的数据:
是否可以订购 flagid 为例如 7,5,8 的数据?
我想在某个地方定义 flagid 7 是第一个, flagid 5 是第二个, flagid 8 是第三个。现在我只能用 asc 或 desc 更改顺序,5,7,8 我可以更改为 8,7,5。但我需要 7、5、8。
最佳答案
使用 ORDER BY
和 CASE
表达式如下:
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/