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

  • 相关阅读:
    XML传输数据导致的安全问题
    XML的学习
    docker的笔记
    对于glog中ShutdownGoogleLogging后不能再次InitGoogleLogging问题的解决办法
    游戏分类英文缩写
    带属性的向前声明:warning: type attributes are honored only at type definition
    linux GCC编译错误:CPU you selected does not support x8664 instruction set
    电商数据分析
    日常电脑软件推荐清单
    优秀开源组合:助你快速研发
  • 原文地址:https://www.cnblogs.com/ylsoo/p/3365562.html
Copyright © 2011-2022 走看看