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

工作中会遇到有些复杂的查询排序,例如领导想看绩效成绩低于某指定成绩的员工信息,或许会感兴趣工资在某区间的员工信息等等,比如对于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排序二 --- 工作中的条件排序

上一篇:Tomcat中的Web.xml和servlet.xml的学习


下一篇:mysql的中文乱码