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: ...
随机推荐
- sql 创建用户脚本
USE master go CREATE LOGIN jiazhuang --用户名 WITH PASSWORD = 'sa', --密码 DEFAULT_DATABASE = JiaZhuan, ...
- ssh整合(spring + struts2 + hibernate)xml版
1.1分层 1.2jar节点 <dependencies> <dependency> <groupId>junit</groupId> <arti ...
- 对 Vue 的理解(一)
一.什么是 Vue ? 首先,Vue 是一个 MVVM 框架,M -- 模型,就是用来定义驱动的数据,V -- 视图,是经过数据改变后的 html,VM -- 框架视图,就是用来实现双向绑定的中间桥梁 ...
- File I/O 小结
1 .I/0: input/output 2.java.io.File 3 .表示:文件或者文件夹(目录) 4. File f = new File("文件路径"); 5 .注意: ...
- Drupal中hook_theme函数用法
在开发的时候不免要使用到drupal theme 定义.举个简单的例子: 复制代码 代码如下: <?phpfunction modulename_theme() { //开始定义自己的theme ...
- access与excel
我们承认,Excel是伟大的,但却又不得不承认,Excel不是万能的,它至少在"多数据表关联"."数据处理自动化"."大量数据的处理"等方面 ...
- C++之不带指针类的设计——Boolean
经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...
- wx.grid.Grid
# -*- coding: cp936 -*- import wx import wx.grid import wx.lib.gridmovers as gridmovers import pymss ...
- PHP header() session_start() 函数前为什么不能有输出?
前阵面试遇到的问题,当时没答上来,后来查了些资料,仍未得到答案.今天研究HTTP请求,终于知道了答案. HTTP 函数允许在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. HTT ...
- BSTR和CComBSTR使用指南
msdn关于bstr的分配和释放的注意事项:http://msdn.microsoft.com/zh-cn/library/cc485262(VS.71).aspx msdn对 CComBSTR 的使 ...