带有条件的SQL序列列

时间:2017-09-27 07:50:00

标签: sql sql-server

我需要在我的SQL查询中添加新列,以便我可以通过一些ID(整数)而不是按名称(字符串)对结果进行排序。

问题是我想确保一些名称具有最高的SequenceID,所以我可以将它们放在最后。 我想出了类似的东西:

ROW_NUMBER() OVER(ORDER BY IIF([Name] = N'something', 'zzzzSomething', [Name]) ASC) AS SequenceID

有没有更好的实施?

1 个答案:

答案 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',在此之前按字母顺序排序所有其他名称。