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树形结构数据---常见处理情景的更多相关文章

  1. Oracle树形结构数据-相关知识总结

    Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIANCODE.TREE_TABLE_BASI ...

  2. 前端js重组树形结构数据方法封装

    不知道大家平时工作中,有没有遇到这样一种情况:后端接口返回的数据,全都是一维的数组,都是平铺直叙式的数据,业务需求却要你实现树形结构的功能.那么,针对这种情况该怎么办呢?是跟后台好好沟通一下呢,还是沟 ...

  3. 【Tree 3】树形结构数据加载的思考

    前面两篇文章,分别介绍了使用递归和非递归算法加载树形结构数据的方式,本篇文章,则是自己闲下来的时候,进行的一点小思考. 一.什么地方会用到树形结构 刚开始一看到这种结构的时候,最先是想到了家谱.家谱就 ...

  4. oracle 树形SQL

    oracle树形sql查询实例分析   通过此SQL语句  [sql] select  * from tree    查看原始数据如下:     我们要想得到如下的一个树形查询结果如下图所示(包含 R ...

  5. oracle 树形表结构查询 排序

    oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...

  6. oracle数据库管理系统常见的错误(一)

    oracle数据库管理系统常见的错误之一如下: Listener refused the connection with the following error:ORA-12519, TNS:no a ...

  7. 整理oracle 树形查询

    注:本文参考了<整理oracle 树形查询> sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: create ...

  8. MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  9. js将有父子关系的数据转换成树形结构数据

    js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...

随机推荐

  1. 虚拟机中Linux设置当前ip

    1.查看当前IP,查看网卡信息 ifconfig 2.设置临时IP ifconfig eth0 192.168.1.163 netmask 255.255.255.0 eth0表示第一块网卡 设置完之 ...

  2. [转]EntityFramework中常用的数据修改方式

    本文转自:http://blog.csdn.net/itmaxin/article/details/47662151 上一篇文章里提到了 EntityFramework中常用的数据删除方式,那么修改对 ...

  3. JavaScript 监听回车事件

    JS监听某个输入框 //回车事件绑定 $('#search_input').bind('keyup', function(event) { if (event.keyCode == "13& ...

  4. java几种常见的排序算法总结

    /*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int  ...

  5. FTP FileZilla Server 本地加密C# 实现

    最近公司要做一个资料管理模块,因系统是C/S架构,原来小文件都是直接使用7Z压缩后保存到SQL Server数据库 而资料管理模块也就是文件上传,下载加权限管理,考虑文件较多,还可能比较大,所以打算在 ...

  6. vba SpecialCells(Type,Value) 参数说明

    Range.SpecialCells 方法可以返回一个 Range 对象,该对象代表与指定类型和值匹配的所有单元格. 其语法如下: 表达式.SpecialCells(Type,Value) 其Type ...

  7. axios 发 post 请求,后端接收不到参数的解决方案

    问题场景 场景很简单,就是一个正常 axios post 请求: axios({ headers: { 'deviceCode': 'A95ZEF1-47B5-AC90BF3' }, method: ...

  8. Infor SyteLine创建一个数据维护窗口

    上次有在SyteLine解决一个问题<匹配与显示中文说明> http://www.cnblogs.com/insus/p/3396541.html .这些数据需要数据库管理员在数据库才能维 ...

  9. 【Linux】IPC-消息队列

    问题 消息队列id 和键值KEY区别? 首先要注意一个概念:IPC结构都是内核的结构.也就是说IPC结构由内核维护,对于每个进程都是公共的,不属于某个特定进程.只有这样,IPC结构才能支持它们&quo ...

  10. 【NLP_Stanford课堂】最小编辑距离

    一.什么是最小编辑距离 最小编辑距离:是用以衡量两个字符串之间的相似度,是两个字符串之间的最小操作数,即从一个字符转换成另一个字符所需要的操作数,包括插入.删除和置换. 每个操作数的cost: 每个操 ...