我需要在我的SQL查询中添加新列,以便我可以通过一些ID(整数)而不是按名称(字符串)对结果进行排序。
问题是我想确保一些名称具有最高的SequenceID,所以我可以将它们放在最后。 我想出了类似的东西:
ROW_NUMBER() OVER(ORDER BY IIF([Name] = N'something', 'zzzzSomething', [Name]) ASC) AS SequenceID
有没有更好的实施?
答案 0 :(得分:1)
首先按特殊名称排序,然后按名称排序:
ROW_NUMBER() OVER (ORDER BY
case name when N'John' then 3 when N'Mary' then 2 else 1 end, name
) AS SequenceID
这会在'John'
之前和之前排序'Mary'
,在此之前按字母顺序排序所有其他名称。