首页 > 数据库技术 > 详细

ORACLE排序二 --- 工作中的条件排序

时间:2020-12-13 08:07:24      阅读:30      评论:0      收藏:0      [点我收藏+]

工作中会遇到有些复杂的查询排序,例如领导想看绩效成绩低于某指定成绩的员工信息,或许会感兴趣工资在某区间的员工信息等等,比如对于EMP表我们需要查询工资在1000到2000 之间的员工及把查询结果排在前面,这时候可以新生成一列,通过多列查询,例如:

SQL> SELECT empno AS 工号,
    ename AS 姓名,
    CASE WHEN sal>=1000 AND sal<2000 THEN 1 ELSE 2 END AS 级别,
    sal AS 工资
    FROM emp
    WHERE deptno=30
    ORDER BY 3,4;
   工号 姓名               级别        工资
----- ---------- ---------- ---------
 7654 MARTIN              1   1250.00
 7521 WARD                1   1250.00
 7844 TURNER              1   1500.00
 7499 ALLEN               1   1600.00
 7900 JAMES               2    950.00
 7698 BLAKE               2   2850.00
6 rows selected

从结果可以看出来工资不在1000到2000范围内的员工排在下面,或者也可以不显示"级别"字段,只需要CASE WHEN 语句写在ORDER BY 里面,如下面:

SQL> SELECT empno AS 工号,
  2  ename AS 姓名,
  3  sal AS 工资
  4  FROM emp 
  5  WHERE deptno=30
  6  ORDER BY CASE WHEN sal>=1000 AND sal<2000 THEN 1 ELSE 2 END,3;
   姓名 姓名              工资
----- ---------- ---------
 7654 MARTIN       1250.00
 7521 WARD         1250.00
 7844 TURNER       1500.00
 7499 ALLEN        1600.00
 7900 JAMES         950.00
 7698 BLAKE        2850.00
6 rows selected

 

ORACLE排序二 --- 工作中的条件排序

原文:https://www.cnblogs.com/xabi/p/14127454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!