我有一个案例,我需要按照以下定制顺序订购查询结果:
DEPARTEMENT_ID
需要按此顺序排列(10然后是50然后是20)
有没有办法得到这个结果?
答案 0 :(得分:2)
您可以在 ORDER BY 子句中使用 CASE 表达式。
我在这里回答了一个类似的问题,https://stackoverflow.com/a/26033176/3989608,你可以调整它以在CASE表达式中获得自定义条件。
例如,
SQL> SELECT ename,
2 deptno
3 FROM emp
4 ORDER BY
5 CASE deptno
6 WHEN 20 THEN 1
7 WHEN 10 THEN 2
8 WHEN 30 THEN 3
9 END
10 /
ENAME DEPTNO
---------- ----------
SMITH 20
FORD 20
ADAMS 20
JONES 20
SCOTT 20
CLARK 10
KING 10
MILLER 10
ALLEN 30
TURNER 30
WARD 30
MARTIN 30
JAMES 30
BLAKE 30
14 rows selected.
SQL>
答案 1 :(得分:1)
您可以采用的另一种方法是让另一列DISPLAY ORDER按照您想要的顺序包含序列号数据。
所以sql将是
select JOB_ID, DEPARTMENT_ID
from EMPLOYEES
order by DISPLAY_ORDER;
答案 2 :(得分:1)
您可以使用DECODE
来完成此操作。
SELECT JOB_ID,DEPARTMENT_ID
FROM YOURTABLE
ORDER BY DECODE(DEPARTEMENT_ID, 10, 1, 50, 2, 20, 3,4)
有关详细信息,请参阅下面的这些主题。