基于Oracle中的叶子从层次结构树中提取子树
我有一个表基于Oracle中的叶子从层次结构树中提取子树,oracle,tree,hierarchical-data,connect-by,Oracle,Tree,Hierarchical Data,Connect By,我有一个表users,表示如下层次结构树: 纵队 类型 评论 用户id 整数 序列 用户类型 整数 1用于用户组2用于普通用户 组id 整数 对同一表中用户类型为1的用户的引用 用户名 瓦查尔(xxx) 您可以使用connectby朝相反方向行走。那么级别当然也会相反。因此,要以正确的顺序和缩进获得结果,请基于这些结果链接另一个查询,该查询将使用row\u number()确定缩进: with base as ( select u.user_name, u.user_id,
users
,表示如下层次结构树:
纵队
类型
评论
用户id
整数
序列
用户类型
整数
1用于用户组2用于普通用户
组id
整数
对同一表中用户类型为1的用户的引用
用户名
瓦查尔(xxx)
您可以使用
connectby
朝相反方向行走。那么级别
当然也会相反。因此,要以正确的顺序和缩进获得结果,请基于这些结果链接另一个查询,该查询将使用row\u number()
确定缩进:
with base as (
select
u.user_name,
u.user_id,
u.group_id,
u.user_type,
level as lvl
from users u
connect by prior u.group_id = u.user_id
start with u.user_id = 13
)
select
lpad('-', (row_number() over (order by lvl desc) - 1) * 2, ' ') || base.user_name
as padded_name,
user_id,
group_id,
user_type
from base
order by lvl desc;