`
lengyue
  • 浏览: 144468 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

oracle行转列的另一种写法

 
阅读更多

这是一个利用oracle的树形结构查询来实现oracle行转列的一种写法,

关键的点是使用row_number对数据进行排序,然后使数据按顺序号排列起来,

然后使用substr(MAX(sys_connect_by_path(t.LEVELAPPROVER, ';')), 2)将数据的相应列连起来,并用分号分隔.

select REIMBURSEMENTMAINTABLE_SEQ,
substr(MAX(sys_connect_by_path(t.LEVELAPPROVER, ';')), 2) from
(select REIMBURSEMENTMAINTABLE_SEQ,LEVELAPPROVER,
row_number() over(order by REIMBURSEMENTAPPROVALLOG_SEQ asc)rn
 from pm_reimbursementapprovallog)t
 start with t.rn=1
 CONNECT BY  t.rn - 1 = PRIOR t.rn
 group by REIMBURSEMENTMAINTABLE_SEQ

分享到:
评论

相关推荐

    oracle RAC 集群配置写法

    Oracle Real Application Clusters (RAC) 是一种允许多个 Oracle 数据库实例同时访问单一数据库的技术,通过这种方式来提高系统的可用性和性能。RAC 的设计目的是为了支持高可用性、可扩展性和易于管理的企业级应用...

    oracle的伪列与分页

    3. **分页查询的另一种写法**: ```sql SELECT USRID, GRPID, UNAME, SAL, BRITH FROM ( SELECT A.*, ROWNUM AS RN FROM (SELECT * FROM T_USER ORDER BY USRID) A WHERE ROWNUM ) WHERE RN ; ``` 上述...

    Oracle SQLServer行列转换

    另一种是通过`PIVOT`操作。 ##### 1. 使用 `CASE...WHEN` 语句与聚合函数实现行转列 这种方法适用于当已知要转置的具体列名时。以下面的例子为例: - **表结构**: ```sql CREATE TABLE [Scores]( [ID] INT ...

    oracle认证详解Oracle的几种分页查询语句

    为了更好地理解上述分页查询方法的优劣,我们还可以考虑另一种分页查询的写法: ```sql SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A) WHERE RN BETWEEN 21 AND 40 ``` - **不同之处*...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    crond 执行ORACLE rman备份脚本失败的几种情况及解决

    第一种不正确的写法中,直接使用root用户执行备份脚本,但由于备份脚本需要oracle用户的权限,因此这种方式是无效的。第二种不正确的写法则是直接使用oracle用户执行脚本,但crond的默认执行身份是root,这种情况下...

    oracle dblink 的应用

    - 使用 TNSNAMES.ORA 文件:另一种方法是将连接信息放在 TNSNAMES.ORA 文件中,然后在创建 dblink 时引用服务名。但这种方法并不总是可行。 2. dblink 的使用: - 从一个数据库访问另一个数据库的数据,只需要在 ...

    Oracle分页查询(很不错的介绍)

    另外,还有另一种写法,即将分页条件都放在最外层: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A ) WHERE RN BETWEEN 21 AND 40 ``` 这种方式也是有效的,但可能会导致...

    oracle左右连接方法

    每个表中的每一行都会与另一个表中的所有行进行组合。 #### 示例 执行交叉连接查询: ```sql SELECT * FROM a CROSS JOIN b; ``` 等效于: ```sql SELECT * FROM a, b; ``` 结果如下: | ID (a) | ID (b) | |-...

    Oracle 练习题及答案

    另一种写法: ```sql SELECT dname FROM ( SELECT * FROM emp, dept WHERE emp.deptno (+) = dept.deptno ) WHERE ename IS NULL; ``` 这两种查询均用于找出没有任何员工所属的部门,即那些在`emp`表中未被提及的...

    oracle 分页的部分

    对比另一种写法: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A ) WHERE RN BETWEEN 21 AND 40 ``` 虽然两者看似相似,但效率却有显著差异。Oracle的Cost-Based ...

    oracle第2章 编写简单的SELECT语句

    另一种写法: ```sql SELECT deptno, dname, loc FROM dept; ``` 这种方式更加明确地指定了需要查询的具体列。 #### 别名的使用 - **定义**:在SQL中,可以通过AS关键字为列或表指定别名。 - **示例**: - 列...

    一次SQL Tuning引出来的not in , not exists 语句的N种写法2

    【标题】:“一次SQL Tuning引出来的not in , not exists 语句的N种写法2” 【描述】:文章并未直接提供描述,但从标题推测,该内容可能涉及数据库查询优化,特别是关于`not in`和`not exists`两种SQL查询子句的...

    oracle面试题总汇

    - **DB Link概念**:DB Link是一种用于连接不同数据库实例的技术,允许在一个数据库中查询或操作另一个数据库的数据。 - **使用Hint指明**:在SQL语句中可以通过Hint指明使用特定的DB Link,以实现更高效的查询计划...

    oracle sql编程参考

    视图是一种虚拟表,其内容由存储在表中的数据通过 SELECT 语句定义。 - **创建视图**: ```sql CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; ``` - **示例**: ...

    Oracle外连接查询

    如果一个表中没有匹配项,那么结果将显示另一个表的所有字段,并在没有匹配的字段处填充NULL。 除了这些外连接,还有其他类型的连接: - **交叉连接(Cross Join)**:也称为笛卡尔积,它返回两个表的每一对组合,...

    常用数据库JDBC连接写法

    Microsoft SQL Server有两种JDBC驱动,一种来自`jtds`项目,另一种来自Microsoft官方。对于`jtds`,加载`net.sourceforge.jtds.jdbc.Driver`驱动,URL格式为`jdbc:jtds:sqlserver://<主机名或IP>:<端口号>/<数据库...

    ORACLE数据库SQL优化---表连接类型.docx

    - 笛卡尔连接(Cross Join):没有连接条件时,每个表的行与另一表的所有行进行组合,通常不推荐使用,因为它可能导致巨大的结果集。 3. 访问单表的方法: 优化器在连接表的同时,还要选择访问单表的最佳方式,...

Global site tag (gtag.js) - Google Analytics