SQL自定义优先级

时间:2011-10-27 11:48:09

标签: sql sql-server stored-procedures

我必须按多行排序表,其中一行是“自定义”。我在该列中有4个值,优先级应该是-60或151,然后是30或111.所以我只有那个特定的4个值,如果-60在151之后,它不应该被排序,如果-60在30之后,应该进行排序。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以按顺序使用案例陈述。

select SomeColumn
from YourTable
order by case custom 
           when -60 then 1
           when 151 then 1
           when 30 then 2
           when 111 then 2
         end

或类似的东西

select SomeColumn
from YourTable
order by nullif(nullif(custom, -60), 151)

答案 1 :(得分:1)

你可以使用这样的查询:

select *
from Table1
order by
    field1,
    field2,
    field3,           
    case
       when custom = -60 then 0
       when custom = 151 then 0
       when custom = 30 then 1
       when custom = 111 then 1
    end asc