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

Oracle9i中使用SYS_CONNECT_BY_PATH进行行列转换

 
阅读更多
有表:
SQL> SELECT deptno, ename FROM emp ORDER BY deptno, ename;
DEPTNO ENAME
------ ----------
    10 CLARK
    10 KING
    10 MILLER
    20 ADAMS
    20 FORD
    20 JONES
    20 SCOTT
    20 SMITH
    30 ALLEN
    30 BLAKE
    30 JAMES
    30 MARTIN
    30 TURNER
    30 WARD
14 rows selected.
想输出为:
DEPTNO ENAME
------ ----------
    10 CLARK, KING, MILLER
    20 ADAMS, FORD, JONES, SCOTT, SMITH
    30 ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD

除了使用聚集函数或者存储过程之外,9i中可以:
SQL> SELECT deptno
  2       , LTRIM(MAX(SYS_CONNECT_BY_PATH(ename,','))
  3         KEEP (DENSE_RANK LAST ORDER BY curr),',') AS concatenated
  4  FROM   ( SELECT deptno
  5                , ename
  6                , ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY ename) AS curr
  7                , ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY ename) -1 AS prev
  8           FROM   emp )
  9  GROUP BY deptno
10  CONNECT BY prev = PRIOR curr AND deptno = PRIOR deptno
11  START WITH curr = 1;

    DEPTNO  CONCATENATED

    10      CLARK,KING,MILLER
    20      ADAMS,FORD,JONES,SCOTT,SMITH
    30      ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
分享到:
评论

相关推荐

    ORACLE查询树型关系(connect_by_prior_start_with)

    在 Oracle 9i 中,SYS_CONNECT_BY_PATH 函数可以用来显示整个路径,从最高级到当前行的内容。例如: ```sql SELECT SYS_CONNECT_BY_PATH(column_name, '/') "PATH" FROM table_name START WITH initial-condition ...

    Oracle_hierarchical_SQL_查询应用

    自Oracle 9i版本开始,`SYS_CONNECT_BY_PATH`函数被引入,用于追踪从根节点到当前行的完整路径。在SQL1.3中,这个函数将每个地区的完整路径以斜线分隔的形式返回。例如,路径`/Asia/China/Beijing`表示从亚洲开始,...

    oracle9i310安装,连接oracle9,10的方法

    Oracle 9i是一款历史悠久的关系型数据库管理系统,它在2001年首次发布,提供了许多先进的功能和技术。本文将详细讲解如何安装Oracle 9i,以及如何连接到Oracle 9和10版本的数据库。 首先,Oracle 9i的安装过程可以...

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

    - 使用`sys_connect_by_path()`函数将`course`列中的所有值连接起来,默认分隔符为`*`。 - 通过`SUBSTR(sys_connect_by_path(course, '*'), 2)`去除第一个星号。 - 使用`REPLACE()`函数将剩余的星号替换为分号`;`...

    Oracle9i Windows安装手册

    Oracle9i是一款经典的数据库管理系统,尤其在Windows平台上广泛使用。本安装手册将引导你逐步完成在Windows操作系统上安装Oracle9i的全过程,确保你能够顺利搭建数据库环境。 **一、系统需求** 在开始安装之前,...

    oracle-sql

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

    Oracle9I 手工建库笔记

    Oracle9i是Oracle公司发布的一款重要的数据库管理系统版本,在企业级应用中有着广泛的应用场景。由于Oracle9i版本发布时间较早(2000年左右),在那个时代,手动建立数据库是一项必备技能。随着技术的发展,尽管现在...

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

    需要注意的是,这个语句只能用于 Oracle 9i 及其后续版本中,因为 SYS_CONNECT_BY_PATH 函数是在 Oracle 9i 中引入的。 使用 SYS_CONNECT_BY_PATH 函数可以轻松地取得一个表的所有字段名用逗号分割,这种方法可以...

    oracle10g笔记DBA

    - `svrmgrl> connect internal/oracle`: 使用内部模式连接到 Oracle 实例。 - `shutdown immediate`: 立即关闭数据库,确保所有用户都已断开连接。 - `shutdown abort`: 强制关闭数据库实例,这种模式可能导致...

    Oracle数据库网络与安全之FAQ汇集

    (ORACLE_HOME=path_to_oracle_home) -- 替换为你的Oracle安装路径 (SID_NAME=your_sid) -- 替换为你的SID名称 ) ``` 2. **配置客户端`sqlnet.ora`文件:** - 在客户端的`sqlnet.ora`文件中,确保包含以下行: ...

    ArcSDE自动安装和手动安装详解.pdf

    然而,复杂的POSTINSTALL配置通常需要在DOS环境下通过命令行工具完成,例如使用`sdesetupora9i`(根据所用Oracle版本调整)来配置sde用户,或使用`sdeservice`来创建SDE服务。 具体命令格式如下: - 配置sde用户:`...

    Oracle自动备份数据库的三种方式.pdf

    connect target sys/password rcv run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format '/u01/oradata/backup/arch%u_%s_%p' ...

Global site tag (gtag.js) - Google Analytics