2017-09-27 94 views
0

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

问题是我想确保一些名称与SequenceID最高,所以我可以把它们放在最后。 我想出了这样的事情:

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

任何更好的实现?

+0

您的代码段只考虑一个名称。你需要多个吗? – PacoDePaco

+0

为什么不按字符串排序?无论如何,如果有一些具体原因(我无法想象巫婆之一),我可以给出的唯一建议是使用CASE语句而不是IIF,因为IIF的索引不起作用。 –

回答

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