2015-04-06 2 views

ответ

2

Вы можете использовать выражение деликтного иска по конкретным обстоятельствам дела в 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

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

Смежные вопросы