zoukankan      html  css  js  c++  java
  • Oracle CONNECT BY 用法

    CONNECT BY START WITH
     
    LEVEL是伪列,用来表示该条记录位于树形结构的第几层
    START WITH 代表你要开始遍历的的节点
    CONNECT BY PRIOR 是标示父子关系的对应
     



    SELECT last_name, employee_id, manager_id, LEVEL
     FROM employees
     START WITH employee_id = 100
    CONNECT BY PRIOR employee_id = manager_id
     ORDER SIBLINGS BY last_name;

      SELECT LPAD(' ', 5 * LEVEL, ' ') || ename empName,
             dname,
             job,
             sys_connect_by_path(ename, '/') cbp
        FROM scott.emp e, scott.dept d
       WHERE e.deptno = d.deptno
       START WITH mgr IS NULL
      CONNECT BY PRIOR empno = mgr
       ORDER SIBLINGS BY job;

    EMPNAME          DNAME          JOB       CBP
    ---------------- -------------- --------- ---------------------------
      KING           ACCOUNTING     PRESIDENT /KING
        JONES        RESEARCH       MANAGER   /KING/JONES
          SCOTT      RESEARCH       ANALYST   /KING/JONES/SCOTT
            ADAMS    RESEARCH       CLERK     /KING/JONES/SCOTT/ADAMS
          FORD       RESEARCH       ANALYST   /KING/JONES/FORD
            SMITH    RESEARCH       CLERK     /KING/JONES/FORD/SMITH
        CLARK        ACCOUNTING     MANAGER   /KING/CLARK
          MILLER     ACCOUNTING     CLERK     /KING/CLARK/MILLER
        BLAKE        SALES          MANAGER   /KING/BLAKE
          JAMES      SALES          CLERK     /KING/BLAKE/JAMES
          ALLEN      SALES          SALESMAN  /KING/BLAKE/ALLEN
          WARD       SALES          SALESMAN  /KING/BLAKE/WARD
          TURNER     SALES          SALESMAN  /KING/BLAKE/TURNER
          MARTIN     SALES          SALESMAN  /KING/BLAKE/MARTIN


    自从Since Oracle 9i 开始,就可以通过 SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 如下例所示:
    如HN项目,取SWJG_LJ


    select vjg.swjg_dm,
           vjg.sj_swjg_dm,
           vjg.swjg_lj swjg_lj1,
           '14100000000' || sys_connect_by_path(swjg_dm, '#') swjg_lj2,
           sys_connect_by_path(swjg_dm, '#') swjg_lj3
      from ssfxpgcl.dm_swjg vjg
     start with vjg.swjg_dm = '14101000000'
    connect by prior swjg_dm = sj_swjg_dm

  • 相关阅读:
    2-3树
    B树
    负载均衡的算法种类
    String源码分析
    实现一个List集合中的某个元素的求和
    就是通过事件方法,在window.loaction.href里追加了参数字符串
    九大内置对象及四个域对象的总结
    BigDecimal add方法问题:调用add后,求和结果没变
    java中List元素移除元素的那些坑
    Java序列化和反序列化,你该知道得更多
  • 原文地址:https://www.cnblogs.com/ylsoo/p/3365562.html
Copyright © 2011-2022 走看看