将Order By中按字母顺序排列的第一项移动到最后

时间:2014-05-07 21:38:44

标签: sql sql-order-by

ou.ShortName包含状态列表,只需将其放入Order By子句按字母顺序列表即可。

929285  Alaska  2014-04-01 12:00:00.000
931104  Alaska  2014-04-02 12:00:00.000
931106  Alaska  2014-04-03 17:00:00.000
931253  Alaska  2014-04-15 20:30:00.000
929320  Arizona 2014-04-02 15:30:00.000
929322  Arizona 2014-04-08 15:30:00.000
929324  Arizona 2014-04-09 15:30:00.000
929326  Arizona 2014-04-16 15:30:00.000

但最终用户希望阿拉斯加,只有阿拉斯加,移动到列表的末尾。这似乎是我可以通过Case语句在Order By中做的事情,但我对如何做到这一点感到难过。

order by 
Case
        when ou.ShortName = 'Alaska'
        then ?????
        Else ou.ShortName
End as States

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在order by中使用多个子句:

order by (case when ou.ShortName = 'Alaska' then 1 else 0 end),
         ou.ShortName

顺便说一下,as不属于order by子句。它只会产生错误。