example:
select * from t_cu where cno IN (
220,
120,
900,
350,
99,
1,
34
);
I would like to display the data in the same order as
220,
120,
900,
350,
99,
1,
34
=========================A
select * from t_cu where cno IN (
220,
120,
900,
350,
99,
1,
34
)
order by decode(cno,
220, 1,
120, 2,
900, 3,
350, 4,
99, 5,
1, 6,
34, 7,
8);
=========================B
SQL> ed
Wrote file afiedt.buf
1 with req as (select '7844,7698,7782,7499' as en from dual)
2 ,ord as (select REGEXP_SUBSTR (en, '[^,]+', 1, level) en, rownum rn
3 from req
4 connect by level <= length(regexp_replace(en,'[^,]*'))+1)
5 --
6 select emp.*
7 from emp join ord on (emp.empno = ord.en)
8* order by ord.rn
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
=========================C
SQL> with t as (select t.*, rownum r
from table (sys.odcinumberlist (7788,
7934,
7782,
7902,
7369,
7499,
7566)) t)
select empno, ename
from emp e, t
where e.empno = column_value
order by r
/
EMPNO ENAME
---------- ----------
7788 SCOTT
7934 MILLER
7782 CLARK
7902 FORD
7369 SMITH
7499 ALLEN
7566 JONES
7 rows selected.
=========================