ORACLE SQL 是否可以自定义查询结果的顺序?

ORACLE SQL it is possible to customize the order result of a query?

我有一个案例,我需要按如下自定义顺序对查询结果进行排序:

DEPARTEMENT_ID 需要按此顺序(10 然后 50 然后 20)

有没有办法得到这个结果?

一种方法是让另一列 DISPLAY_ORDER 按您想要的顺序包含序列号数据。

所以 sql 将是

select JOB_ID, DEPARTMENT_ID 
from EMPLOYEES
order by DISPLAY_ORDER;

您可以使用 DECODE 来完成此操作。

SELECT JOB_ID,DEPARTMENT_ID
FROM YOURTABLE
ORDER BY DECODE(DEPARTEMENT_ID, 10, 1, 50, 2, 20, 3,4)

有关详细信息,请参阅下面的这些线程。

Custom Order in Oracle SQL

DECODE

您可以在 ORDER BY 子句中使用 CASE 表达式。

我在这里回答了一个类似的问题,,您可以调整它以在 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>