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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容