Oracle树形结构数据---常见处理情景
Oracle树形结构数据---常见处理情景
1.查看表数据结构
SELECT *
FROM QIANCODE.TREE_HIS_TABLE T
ORDER BY T.NODE_LEVEL;
其中:NODE_SID_DESC显示的是当前行中节点的‘节点详情’。
部分数据如下图所示:

2.树形结构数据--处理情景
处理情景一:查询出某个节点下的所有叶子节点
查询代码如下:
SELECT *
FROM(SELECT A.RN
,A.NODE_CODE
,A.NODE_NAME
,A.NODE_PID
,A.NODE_SID_DESC
,LEAD(A.LEVELSS) OVER(ORDER BY RN) AA
--1.2只有叶子节点才有 AA<=A.LEVELSS,即找出所有的叶子节点
,CASE
WHEN LEAD(A.LEVELSS) OVER(ORDER BY RN)>A.LEVELSS THEN
0
ELSE
1
END LEAF
--1.1查找某节点及该节点下的所有子孙节点
FROM(SELECT ROWNUM RN
,T.NODE_CODE
,T.NODE_NAME
,T.NODE_PID
,T.NODE_SID_DESC
,LEVEL LEVELSS
FROM QIANCODE.TREE_HIS_TABLE T
START WITH T.NODE_CODE='1'
CONNECT BY PRIOR T.NODE_CODE=T.NODE_PID) A
)B
WHERE B.LEAF=1;
查询思路:第一步,通过connect by..start with 查出该节点及该节点下的所有子孙节点,并查出该查询结果下的伪列rownum;
第二步,使用分析函数over(),根据rownum进行排序,LEAD(A.LEVELSS) OVER(ORDER BY RN)>A.LEVELSS查询出当前行的下一行数据对应的层级是否大于当前行的层级,如果下一行数据的层级小于当前行层级,则表明当前行为叶子节点(因为当前数据已经按查询节点下的子孙节点层级组成结构依次排序)。
第三步,查询出所有步骤二中所有叶子节点,即为该查询节点下的所有叶子节点。
----------------------------------==============================更多内容持续更新中==================================================--------------------------
Oracle树形结构数据查询的基本知识请查看:https://www.cnblogs.com/zhoudaqianhaha/p/Oracle_ShuXing111.html
Oracle窗口函数基本知识请查看:
Oracle树形结构数据---常见处理情景的更多相关文章
- Oracle树形结构数据-相关知识总结
Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT * FROM QIANCODE.TREE_TABLE_BASI ...
- 前端js重组树形结构数据方法封装
不知道大家平时工作中,有没有遇到这样一种情况:后端接口返回的数据,全都是一维的数组,都是平铺直叙式的数据,业务需求却要你实现树形结构的功能.那么,针对这种情况该怎么办呢?是跟后台好好沟通一下呢,还是沟 ...
- 【Tree 3】树形结构数据加载的思考
前面两篇文章,分别介绍了使用递归和非递归算法加载树形结构数据的方式,本篇文章,则是自己闲下来的时候,进行的一点小思考. 一.什么地方会用到树形结构 刚开始一看到这种结构的时候,最先是想到了家谱.家谱就 ...
- oracle 树形SQL
oracle树形sql查询实例分析 通过此SQL语句 [sql] select * from tree 查看原始数据如下: 我们要想得到如下的一个树形查询结果如下图所示(包含 R ...
- oracle 树形表结构查询 排序
oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...
- oracle数据库管理系统常见的错误(一)
oracle数据库管理系统常见的错误之一如下: Listener refused the connection with the following error:ORA-12519, TNS:no a ...
- 整理oracle 树形查询
注:本文参考了<整理oracle 树形查询> sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: create ...
- MySql/Oracle树形结构查询
Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...
- js将有父子关系的数据转换成树形结构数据
js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...
随机推荐
- rabbitmq 命令&& rabbitmq教程(一)
先来个官方教程 http://www.rabbitmq.com 在windows 下 命名 去掉sudo 我是在windows下测试 用net调用 常用命令 控制台命令:sudo rabbitmqct ...
- js数组与字符串相互转换
一.数组转字符串(将数组元素用某个字符连接成字符串) var a, b;a = new Array(0,1,2,3,4);b = a.join("-"); 二.字符串转数组(将字符 ...
- rest-framework框架——视图三部曲
一.mixins类编写视图 1.配置url urlpatterns = [ ... re_path(r'^authors/$', views.AuthorView.as_view(), name=&q ...
- vue+rest-framework前后端分离整合(二)
一.基于api前端显示课程详细信息 1.调整Course.vue模块 <template> <div> <h1>课程列表</h1> <div v- ...
- cf547D. Mike and Fish(欧拉回路)
题意 题目链接 Sol 说实话这题我到现在都不知道咋A的. 考试的时候是对任意相邻点之间连边,然后一分没有 然后改成每两个之间连一条边就A了.. 按说是可以过掉任意坐标上的点都是偶数的数据啊.. #i ...
- IMG标签与before,after伪类
在CSS中总有一些你不用不知道,用到才知道的“坑”.比如今天要谈的,把 before, after 伪类用在 <img> 标签上.嗯,实际上你用你会发现,在大多数浏览器这是无效的,dom中 ...
- JS构造函数(便于理解,简易)
* 构造函数: * 1.构造函数的函数名最好首字母大写(否则 WebStorm 编辑器会提示报错) * 2.自己的对象多次被复制 * 3.构造函数里可以创建公有属性.公有方法.私有属性和私有方法 * ...
- Java 重写hashCode() 时为什么要用 31 来计算
在OSChina 中看到了一篇文章<Java 中正确使用 hashCode 和 equals 方法>,看到 hashCode 的方法体内的31比较有意思. 在Stackoverflow上找 ...
- JUnit_BeforeClass不报异常的 bug 处理
1.try{} cathce(Exception e){}将觉得会出问题的地方括起来测试. 2.main方法调用出问题的方法.
- 网络防火墙之iptables的前世今生和归宿
任何事物都有一个从无到有,再归于无的过程.是的,我这里用了一个绝对词:任何. 防火墙 在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的 ...