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

  • 相关阅读:
    网络诊断工具:[tcpdump]
    网络诊断工具:iproute
    C语言编译全过程
    (Ruby)Ubuntu12.04安装Rails环境
    (Life)牛人的学习方法(转译文)
    (WPF)WPF事件要点WPF宝典笔记
    (WPF)依赖属性要点WPF宝典笔记
    (DP)降低代码重构的风险(转载)
    (WPF)路由事件要点WPF宝典笔记
    JDBC,MYBATIS,Hibernate性能对比!
  • 原文地址:https://www.cnblogs.com/ylsoo/p/3365562.html
Copyright © 2011-2022 走看看