当前位置: 代码迷 >> Oracle开发 >> 关于ORACE排序有关问题
  详细解决方案

关于ORACE排序有关问题

热度:67   发布时间:2016-04-24 06:52:44.0
关于ORACE排序问题
如何做到图片中描述的排序结果,谢谢

------解决方案--------------------
1、decode方式
order by decode(col1,'1001',1,'1008',2,'1002',3,'1010',4,col1)
2、instr方式
order by instr('1001,1008,1002,1010',col1)
------解决方案--------------------
很有趣的问题,这其实是个树形排序。楼主可以重点看看level的用法。

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 
Connected as OKMDB

SQL> SELECT * FROM idtest;

         A          B
---------- ----------
      1001       1008
      1002       1010
      1008       1002
      1010       1003

SQL> SELECT A, B FROM idtest t START WITH t.a = 1001 CONNECT BY PRIOR t.b = t.a;

         A          B
---------- ----------
      1001       1008
      1008       1002
      1002       1010
      1010       1003

SQL> 

------解决方案--------------------
2楼提供的完整正确 经典的树状  子父级排序
------解决方案--------------------
引用:
很有趣的问题,这其实是个树形排序。楼主可以重点看看level的用法。

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 
Connected as OKMDB

SQL> SELECT * FROM idtest;

         A          B
---------- ----------
      1001       1008
      1002       1010
      1008       1002
      1010       1003

SQL> SELECT A, B FROM idtest t START WITH t.a = 1001 CONNECT BY PRIOR t.b = t.a;

         A          B
---------- ----------
      1001       1008
      1008       1002
      1002       1010
      1010       1003

SQL> 


2楼用的11g吗?11g不是没有sqlplusw这个工具了吗?怎么看着这么像?

------解决方案--------------------
引用:
2楼用的11g吗?11g不是没有sqlplusw这个工具了吗?怎么看着这么像?


是PL/SQL Developer的command windows.
------解决方案--------------------
引用:
很有趣的问题,这其实是个树形排序。楼主可以重点看看level的用法。

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 
Connected as OKMDB

SQL> SELECT * FROM idtest;

         A          B
---------- ----------
      1001       1008
      1002       1010
      1008       1002
      1010       1003

SQL> SELECT A, B FROM idtest t START WITH t.a = 1001 CONNECT BY PRIOR t.b = t.a;

         A          B
---------- ----------
      1001       1008
      1008       1002
      1002       1010
      1010       1003

SQL>