问题:要根据某些条件逻辑来排序。例如,如果JOB是”SALESMAN”,要根据comm来排序。

解决方案:在order by子句中使用case表达式

select ename,sal,job,comm from emp 
    order by case when job = 'SALESMAN' then comm else sal end

讨论:
可以使用 case表达式来动态改变如何对结果排序。传递给order by 的值类似这样:

select  ename,sal,job,comm,
    case when job = 'SALESMAN' then comm else sal end as ordered
        from emp
order by 5