`
bada130
  • 浏览: 39565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SYS_CONNECT_BY_PATH 用法

阅读更多
SQL> SELECT DEPTNO, SUBSTR(MAX(SYS_CONNECT_BY_PATH(ENAME, '/')), 2)  PATH
  2  FROM   (
  3         SELECT ENAME, DEPTNO, ROW_NUMBER() OVER (PARTITION BY DEPTNO  ORDER BY EMPNO) RN
  4         FROM   EMP
  5         )
  6  START WITH RN = 1
  7  CONNECT BY PRIOR RN = RN -1
  8         AND PRIOR DEPTNO = DEPTNO
  9  GROUP BY DEPTNO;
DEPTNO PATH
------ --------------------------------------------------------------------------------
    30 ALLEN/WARD/MARTIN/BLAKE/TURNER/JAMES
    20 SMITH/JONES/SCOTT/ADAMS/FORD
    10 CLARK/KING/MILLER

 

SQL> WITH T_10 AS
  2  (
  3  SELECT 1  AS A FROM DUAL
  4  UNION ALL
  5  SELECT 2  AS A FROM DUAL
  6  UNION ALL
  7  SELECT 3  AS A FROM DUAL
  8  UNION ALL
  9  SELECT 4  AS A FROM DUAL
 10  UNION ALL
 11  SELECT 5  AS A FROM DUAL
 12  UNION ALL
 13  SELECT 6  AS A FROM DUAL
 14  UNION ALL
 15  SELECT 7  AS A FROM DUAL
 16  UNION ALL
 17  SELECT 8  AS A FROM DUAL
 18  UNION ALL
 19  SELECT 9  AS A FROM DUAL
 20  UNION ALL
 21  SELECT 10  AS A FROM DUAL
 22  )
 23  SELECT SUBSTR(SYS_CONNECT_BY_PATH(A, ', '), 2)  PATH
 24  FROM   (
 25         SELECT ROWNUM RN, A FROM T_10
 26         )
 27  START WITH RN = 1
 28  CONNECT BY PRIOR RN = RN - 1;
PATH
--------------------------------------------------------------------------------
 1
 1, 2
 1, 2, 3
 1, 2, 3, 4
 1, 2, 3, 4, 5
 1, 2, 3, 4, 5, 6
 1, 2, 3, 4, 5, 6, 7
 1, 2, 3, 4, 5, 6, 7, 8
 1, 2, 3, 4, 5, 6, 7, 8, 9
 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
10 rows selected

 

分享到:
评论

相关推荐

    sys_connect_by_path的用法20220526.txt

    行列转换,层级关系,oracle sys_connect_by_path的用法

    oracle sys_connect_by_path 函数 结果集连接

    值得注意的是,尽管这个方法成功实现了将非树结构数据转化为路径字符串,但它并不是`sys_connect_by_path`函数的典型应用场景。通常,`sys_connect_by_path`用于具有明显父子关系的树形数据,而在这个例子中,作者...

    oracle列合并的实现方法

    很多场合我们都会用到...sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,’,’)。这个

    MySQL实现类似于connect_by_isleaf的功能MySQL方法或存储过程

    在MySQL中,面对类似Oracle的`connect_by_isleaf`功能的需求,即查找并修改指定ID的所有子级记录,可以通过自连接、存储过程或者递归函数等方法实现。这里我们主要探讨两种MySQL的实现方式:一种是使用用户定义的...

    如何取得一个表的所有字段名用逗号分割

    取得一个表的所有字段名用逗号分割 在 Oracle 数据库中,取得一个表的所有字段名用...使用 SYS_CONNECT_BY_PATH 函数可以轻松地取得一个表的所有字段名用逗号分割,这种方法可以广泛应用于各种数据处理和分析场景中。

    sql实现多行合并一行

    在Oracle中,我们可以利用`CONNECT BY`和`SYS_CONNECT_BY_PATH`函数来实现这个目标。`CONNECT BY`用于建立树形连接,而`SYS_CONNECT_BY_PATH`则可以沿着这些连接路径收集数据。 以下是一个详细的步骤解释: 1. ...

    oracle-tree-sql.rar_oracle

    理解并熟练掌握`CONNECT BY`、`PRIOR`、`sys_connect_by_path`等关键字和函数,可以帮助我们更高效地处理树形结构的数据。在实际应用中,还需要考虑性能优化,如合理设计表结构和使用索引,以确保查询的效率。

    oracle-sql

    总的来说,Oracle SQL提供了丰富的层次查询和数据清理工具,如SYS_CONNECT_BY_PATH、CONNECT_BY_ISLEAF、CONNECT_BY_ROOT和CONNECT_BY_ISCYCLE等,使得在处理层次结构数据和大量数据清理时更为便捷高效。同时,理解...

    oracle多行合并一行

    2. **使用`SYS_CONNECT_BY_PATH`函数**:该函数可以递归地遍历每一组中的所有记录,并生成一个由逗号连接的字符串。 3. **使用`ROW_NUMBER()`与`PARTITION BY`结合**:再次使用`ROW_NUMBER()`函数,并结合`PARTITION...

    多行合并为一行的SQL语句.docx

    这个例子展示了如何使用SQL层级查询功能(如`CONNECT BY`和`SYS_CONNECT_BY_PATH`)来合并具有相同编号的多行数据为一行。这种方式适用于那些希望将分散的数据整合成紧凑格式的需求场景。此外,通过调整`SYS_CONNECT...

    Oracle_hierarchical_SQL_查询应用

    通过`START WITH`、`CONNECT BY`和`SYS_CONNECT_BY_PATH`等工具,我们可以轻松地构建和探索复杂的数据结构。理解并熟练运用这些工具,对于数据库管理员和开发人员来说,对于处理层级数据至关重要。

    oracle sql 行列转换

    行列转换,sys_connect_by_path,row_number等函数的用法

    Oracle 数据库树形结构用法总结.mht

    Oracle 数据库树形结构用法总结,例如SYS_CONNECT_BY_PATH 、START WITH . . . CONNECT BY . . .等具体语法介绍

    取得oracle中某表的所有字段名

    `SYS_CONNECT_BY_PATH`函数将每个字段名连接起来,最后使用`MAX`和`substr`函数去除第一个字符(因为路径开始时有一个额外的逗号)。 注意,在上述查询中,`&表名`是一个绑定变量,意味着你需要在实际运行查询时...

    Oracle中分组后拼接分组字符串[文].pdf

    Oracle 中分组后拼接分组字符串 在 Oracle 中,分组后拼接...本文介绍了如何在 Oracle 中使用 `sys_connect_by_path` 函数与 `start` 递归实现分组后拼接分组字符串。该方法可以应用于各种数据分析和报表生成场景。

    oracle10g,9i多行合并一行函数

    这里介绍一种使用`sys_connect_by_path()`函数结合`connect by`语法的方法。 **示例代码:** ```sql SELECT name, MAX(REPLACE(SUBSTR(sys_connect_by_path(course, '*'), 2), '*', ';')) AS courses FROM ( ...

    Oracle+SQL精妙SQL语句讲解.txt

    之后使用`SYS_CONNECT_BY_PATH`函数,通过递归的方式将每个节点下的`ROLE`列值按照指定的分隔符(此处为逗号)进行连接。 以上是对给定文档中几个主要知识点的总结与解释,希望能帮助你更好地理解和掌握这些Oracle ...

    通过SQL语句实现行列转换的几种方法

    ##### 方法三:`SYS_CONNECT_BY_PATH` 和 `CONNECT BY PRIOR` `SYS_CONNECT_BY_PATH` 是另一个常用的方法,它利用Oracle树状查询的功能将行数据连接起来形成一个字符串。通过结合使用`ROW_NUMBER()`函数,可以确保...

Global site tag (gtag.js) - Google Analytics