ORDER BY枚举整数字段SQL

时间:2017-09-11 07:21:32

标签: sql sql-server

我有一个UserInfo表,其中一个名为[Type]的列,数据类型为integer,并且可以包含低于int值

     Employee -> 0
     FormerEmployee ->1
     Retiree -> 2
     Disabled -> 3
     COBRAParticipant -> 4

我正在编写一个sql查询,其中User Type排序顺序现在应该如下:

Employee, COBRAParticipant, Disabled,Retiree, Former Employee. 

使用下面的order by子句不会给出预期的结果。

      order by CASE U.[Type]
        WHEN 0 THEN 'Employee'
        WHEN 1 THEN 'COBRAParticipant'
        WHEN 2 THEN 'Disabled'
        WHEN 3 THEN 'Retiree'
        WHEN 4 THEN 'FormerEmployee'
      END;

有人可以建议我查询。

谢谢!

1 个答案:

答案 0 :(得分:2)

试试吧

order by CASE U.[Type]
        WHEN 0 THEN 0
        WHEN 1 THEN 4
        WHEN 2 THEN 3
        WHEN 3 THEN 2
        WHEN 4 THEN 1
      END;