SQL笔记:根据条件排序查询结果

1 问题

对如下的结果集,要根据某些条件逻辑来排序。例如,若JOB是“SALESMAN”,则根据COMM排序;否则,根据SAL排序。

ENAME SAL JOB COMM
TURNER 1500 SALESMAN 300
ALLEN 1500 CLERK 500
... ... ... ...

2 解决方案

解决方案有两种。

2.1 方案一

order by字句中使用case表达式:

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

2.2 方案二

使用case表达式来动态改变待排序的列:

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

你可能感兴趣的:(SQL笔记:根据条件排序查询结果)