2015-04-06 77 views

回答

2

你可以使用CASE表達在ORDER BY子句

我在這裏回答了一個類似的問題,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> 
+0

這是我需要感謝你的幫助:) – JSK 2015-04-06 08:56:00

1

你可以這樣做的一種方法是讓其他列DISPLAY_ORDER按照你想要的順序擁有序列號數據。

所以將SQL

select JOB_ID, DEPARTMENT_ID 
from EMPLOYEES 
order by DISPLAY_ORDER; 
1

可以使用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