ITPub博客

首页 > 数据库 > Oracle > Oracle的order by case when

Oracle的order by case when

原创 Oracle 作者:甲骨文技术支持 时间:2017-10-26 19:53:44 0 删除 编辑

今天单位一位同事问我,说在一个select里的order by 后面接了 case when是什么意思?例子如下:


  1. order by CASE WHEN ref.IS_TOP=1 THEN 1 ELSE 0 END DESC
我用一个例子来解释这个问题,用到了Oracle自带的用户scott下的emp表


  1. SQL> SELECT EMPNO, ENAME, DEPTNO
  2.   FROM SCOTT.EMP A
  3.  ORDER BY CASE WHEN A.DEPTNO = 20 THEN 1 ELSE 0 END DESC; 

  4.      EMPNO ENAME     DEPTNO
  5. ---------- ---------- ----------
  6.       7902 FORD      20
  7.       7788 SCOTT     20
  8.       7876 ADAMS     20
  9.       7369 SMITH     20
  10.       7566 JONES     20
  11.       7839 KING      10
  12.       7844 TURNER    30
  13.       7900 JAMES     30
  14.       7934 MILLER    10
  15.       7698 BLAKE     30
  16.       7654 MARTIN    30

  17.      EMPNO ENAME     DEPTNO
  18. ---------- ---------- ----------
  19.       7521 WARD      30
  20.       7499 ALLEN     30
  21.       7782 CLARK     10

  22. 14 rows selected.
从上面这个例子能看到,oracle把dept=20的排了序,dept不等于20的,没有处理,胡乱排,因为我加了desc 参数,所以到倒序,在看看asc的效果


  1. SQL> SELECT EMPNO, ENAME, DEPTNO
  2.   FROM SCOTT.EMP A
  3.  ORDER BY CASE WHEN A.DEPTNO = 20 THEN 1 ELSE 0 END ASC; 2 3

  4.      EMPNO ENAME     DEPTNO
  5. ---------- ---------- ----------
  6.       7782 CLARK     10
  7.       7900 JAMES     30
  8.       7844 TURNER     30
  9.       7839 KING      10
  10.       7934 MILLER     10
  11.       7499 ALLEN     30
  12.       7521 WARD      30
  13.       7654 MARTIN     30
  14.       7698 BLAKE     30
  15.       7788 SCOTT     20
  16.       7566 JONES     20

  17.      EMPNO ENAME     DEPTNO
  18. ---------- ---------- ----------
  19.       7902 FORD      20
  20.       7876 ADAMS     20
  21.       7369 SMITH     20

  22. 14 rows selected.

和我们预期的一致,dept等于20的在最下面。

总结:

假如需要让一个列的某些值排序的话,可以用这个方法哦。




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20893244/viewspace-2146478/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle重建awr步骤
请登录后发表评论 登录
全部评论
2009年获得Oracle OCM认证,ITPUB社区OCM联盟成员,熟悉Oracle,mysql,Python,Zabbix等。

注册时间:2016-12-31

  • 博文量
    143
  • 访问量
    570504