zoukankan      html  css  js  c++  java
  • Oracle Contact By的使用

    1.概述

    Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询

     

    2.使用方式

    2.1.通过Connect by 生成序列

    Oracle 构造一个月份的天数
    
    select to_date('200809','yyyymm')+(rownum-1) s_date from dual  
    connect by 
    rownum<=last_day(to_date('200809','yyyymm')) - to_date('200809','yyyymm') + 1

    生成1-10的一个序列
    
    SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 10

    2.2实现树状查询结果

    create table DEP
    (
      DEPID      number(10) not null,
      DEPNAME    varchar2(256),
      UPPERDEPID number(10)
    )
    ---------------------------------------------------------------------
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (0, '总经办', null);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (1, '开发部', 0);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (2, '测试部', 0);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (3, 'Sever开发部', 1);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (4, 'Client开发部', 1);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (5, 'TA测试部', 2);
    INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (6, '项目测试部', 2);
    ---------------------------------------------------------------------
    
    SELECT RPAD( ' ', 2*(LEVEL-1), '-' ) || DEPNAME "DEPNAME",
    CONNECT_BY_ROOT DEPNAME "ROOT",
    CONNECT_BY_ISLEAF "ISLEAF",
    LEVEL ,
    SYS_CONNECT_BY_PATH(DEPNAME, '/') "PATH"
    FROM DEP
    START WITH UPPERDEPID IS NULL
    CONNECT BY PRIOR DEPID = UPPERDEPID;

    DEMO下载

     

  • 相关阅读:
    浅谈 C++ 多态性
    浅谈 C++ 继承
    C++ 深拷贝浅拷贝
    C++ 斐波那契数列
    C++ 指针函数和lambda
    设计模式之单例模式
    结构体中内存对齐和补齐
    AWS S3文件存储工具类
    Java Springboot学习(三) Thymeleaf 、mybatis-plus
    Java Springboot学习(三) 整合springmvc、jdbc、mybatis
  • 原文地址:https://www.cnblogs.com/jak-black/p/OracleContactBy.html
Copyright © 2011-2022 走看看