Oracle Connect by与递归with
2015-07-23 09:44
447 查看
层次查询
select*
from emp;
select empno,
ename,
job,
mgr,
sal,
deptno,level lv,
sys_connect_by_path(ename,
'->') tree_path,
connect_by_root(ename) tree_root,
connect_by_isleaf isleaf,
decode(connect_by_isleaf,1,ename,null) tree_leaf
from emp
start
with empno =
7369
connect
by
prior mgr = empno
order
by
level,empno;
with t(empno,
ename,
job,
mgr,
sal,
deptno,
lv,
tree_path,
tree_root,
isleaf,tree_leaf)
as
(select empno,
ename,
job,
mgr,
sal,
deptno,
1 lv,
'->'||ename,
ename,
(select
decode(count(1),
0,
1)
from emp where a.mgr = empno) isleaf,
(select
decode(count(1),
0, a.ename)
from emp where a.mgr = empno) leafname
from emp a
where empno =
'7369'
union
all
select a.empno,
a.ename,
a.job,
a.mgr,
a.sal,
a.deptno,
b.lv +
1,
b.tree_path ||
'->'
|| a.ename,
b.tree_root,
(select
decode(count(1),
0,
1)
from emp where a.mgr = empno) isleaf,
(select
decode(count(1),
0,a.ename)
from emp where a.mgr = empno) leafname
from emp a, t b
where a.empno = b.mgr)
select
*
from t order
by lv,empno;
相关文章推荐
- Oracle截取字符串和查找字符串
- oracle table 数组的赋值方法
- ORACLE 定时执行存储过程 <二>
- ORACLE 定时执行存储过程<一>
- ORACLE 12C新特性——CDB与PDB
- 释放oracle 的高水位
- Oracle中针对中文进行排序
- oracle数据库实战_如何利用PL/SQL远程登录oracle数据库
- Oracle对没有主键的表分页
- Oracle数据库应用(一)
- PLsql 不安装Oracle也能使用
- 关于oracle数据库的重新安装
- oracle小数点前零丢失的问题
- ubuntu下安装oracle jdk方法
- 学习之:oracle的start with..connect by prior
- oracle所有操作
- 解决: ./check_oracle_health --connect orcl --mode connection-time 报错的问题
- oracle killed
- oracle 中exp备份优化
- oracle-mysql数据迁移之主要工作内容