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. 信鸽推送 C#版SDK

    信鸽官方sdk没提供C#版的DEMO,考虑到应该有其他.NET的也会用到信鸽,下面是我在使用信鸽过程中写的demo.有什么不对的地方,欢迎各位大牛指导. 使用过程中主要是有2个问题: 1.参数组装,本 ...

  2. div内容溢出

    前几天遇到一个问题,代码是这样一个层次: <div class="province"> <ul> <li>1</li> <li ...

  3. Spring Chapter4 WebSocket 胡乱翻译 (一)

    4. WebSocket 包含了Servlet stack,原生WebSocket交互,通过SockJS模拟,并且通过STOMP在WebSocket之上订阅.发布消息. 4.1 简介 不扯了,看到这个 ...

  4. TR move up && TR move down

    code display :: <!DOCTYPE HTML><html>    <head>            <link href="boo ...

  5. Form表单元素

    Form表单元素 action method input: name value type: text password button radio checkbox file submit reset ...

  6. js for in 遍历对象与数组

    遍历对象 let obj = { q:'9', w:'5', e:'2', t:'7', c:'3' } //for in 遍历对象 key为对象的属性名称,遍历属性值时用[]操作符访问 //通过[] ...

  7. C#中.Net的值传递和引用传递

    /// <summary> /// 电脑类 /// </summary> public class Computer { public string Type { get; s ...

  8. 06_Jedis完成MySQL的条件查询案例

    [概述] 假设现在有一个User表,其中有id,name,age,sex等字段,完成如下要求的SQL语句为: 1.查找所有age=18 的User ; 2.查找所有sex="M"( ...

  9. solidity语言14

    库(Libraries) 库类似合约,实现仅在专门地址部署一次,使用EVM的DELEGATECALL的功能重复使用的目的.意思是当库函数被调用后,代码执行在被调用的合约的环境.例如,使用this调用合 ...

  10. Winform中 DataGridView控件中的 CheckBox 的值读出来 始终 为 False ,已解决

    private void DGV_DetailsViewer_CellContentClick(object sender, DataGridViewCellEventArgs e) { )) { D ...