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

DB2 ORACLE 递归查询 行转列

    博客分类:
  • SQL
 
阅读更多
ORACLE
递归查询:
select parent_inst_id, inst_id
  from uprr.u_base_inst
 start with inst_id = '222000000000'
connect by prior inst_id = parent_inst_id;

行转列:
select user_id, wmsys.wm_concat(organ_id)
  from v_organ_user_info
 group by user_id;

DB2
递归查询:
WITH t(pid, id) AS(
  SELECT parent_inst_id, inst_id
    FROM uprr.u_base_inst
   WHERE inst_id = '222000000000'
  UNION ALL
  SELECT c.parent_inst_id, c.inst_id
    FROM t p, uprr.u_base_inst c
   WHERE p.id = c.parent_inst_id)

  SELECT * FROM t

行转列
WITH t1(u,o,num) AS (
    SELECT user_id,organ_id,row_number() over(PARTITION BY user_id ORDER BY organ_id) FROM V_ORGAN_USER_INFO
),
t2(au,ao,anum) AS (
    SELECT u,o,num FROM t1 WHERE num=1
    UNION ALL
    SELECT t1.u,t2.ao||','||t1.o,t1.num FROM t1,t2 
    WHERE t1.num=t2.anum+1 AND t1.u=t2.au AND t1.num <3)

SELECT au,ao FROM t2
WHERE aNUM = (SELECT max(anum) FROM t2 temp WHERE temp.au=t2.au)
ORDER BY t2.au;


其中DB2在行转列的时候,如果字段长度不够长,将会报22001错误
分享到:
评论

相关推荐

    在db2和oracle中的对树的递归查询语句

    DB2虽然没有直接提供类似Oracle的`CONNECT_BY`功能,但可以通过自连接和临时表的方式来实现递归查询。一个典型的例子是使用`WITH RECURSIVE`子句: ```sql WITH RECURSIVE employee_tree (level, employee_id, ...

    DB2递归实现

    然而,DB2递归实现与Oracle递归实现有所不同。DB2递归实现使用逐层递归(广度优先)方法,而Oracle递归实现使用深度优先方法。 在本文中,我们将使用一个实用的例子来描述如何将CONNECT BY和相关的伪列映射到DB2...

    ORACLE转DB2对照全解

    **注意:** Oracle提供了`CONNECT BY`语法来实现层次查询,而DB2则通过递归公共表表达式(CTE)来实现。 #### 九、打印输出信息 **Oracle:** ```sql DBMS_OUTPUT.PUT_LINE('Hello World'); ``` **DB2:** ```sql ...

    将 CONNECT BY 移植到 DB2

    本文旨在指导读者如何将 Oracle 数据库中的 `CONNECT BY` 语法及其相关的伪列转换为适用于 IBM DB2 Universal Database (DB2 UDB) for Linux、UNIX 和 Windows 的递归公共表表达式 (Recursive Common Table ...

    db2与oracle差别.pdf

    例如:CONNECT BY 递归语句、(+)连接操作符、DUAL 表、ROWNUM 伪列、ROWID 伪列、MINUS 操作符、SELECT INTO FOR UPDATE 语句、TRUNCATE TABLE 等。如果要在 DB2 数据库上运行使用了上述方言的应用,就需要进行...

    DB2兼容模式设置文档

    - **Connect by**:在Oracle中用于递归查询的`CONNECT BY`语句,在DB2中需要使用复杂的`WITH`子句结合`UNION ALL`来实现类似功能。 - **Left/Right Join**:DB2不支持Oracle中的`+`符号来表示左连接或右连接,而需...

    Oracle 11GR2的递归WITH子查询方法

    与其他数据库系统(如DB2、Firebird、Microsoft SQL Server、PostgreSQL)相比,虽然Oracle较晚引入递归WITH子查询,但它仍然是一个强大的补充,特别适用于处理需要递归操作的数据。理解并掌握这一特性,对于优化...

    DB2学习记录

    Oracle数据库实现了许多非标准的SQL方言和扩展特性,如`CONNECT BY`递归查询、`(+)`外连接操作符、`DUAL`表、`ROWNUM`伪列、`ROWID`伪列以及`MINUS`操作符等。这些特性在Oracle中非常常用,但在DB2中则不支持。然而...

    面试:如果在现在开发时使用的数据库是DB2(IBM的数据库产品),可能要使用Oracle。在这种背景下,如何开发?

    例如,DB2支持`WITH`子句的递归查询,而Oracle则有`CONNECT BY`语法来实现相同功能。开发者需要对比两者的语法差异,并对SQL脚本进行修改。 2. **数据库对象迁移**: - 表、视图、存储过程、触发器、索引等数据库...

    DB2使用经验积累PDF

    - **类似于ORACLE的NAMEPIPE**:DB2也支持类似的命名管道机制来实现进程间通信。 - **类似于ORACLE的TRUNCATE清表但不记日志的做法**:可以使用`TRUNCATE TABLE`语句来快速清空表中的数据而不记录日志。 - **用CLI...

    db2-技术经验总结

    1.6. DB2实现类型ORACLE的一些功能 29 1.7. 字符数据类型转换的时候需要注意的问题(原) 30 1.8. 本地谓词的使用注意(原) 31 1.9. windows/Linux或Unix下查看DB2端口号 31 1.10. 尽量让fetch first n row only或者...

    比较详细的oracle教程

    - **高级查询**:深入探讨复杂查询技巧,如使用WITH子句进行递归查询、窗口函数的应用、复杂条件筛选等。 - **数据字典**:介绍Oracle数据库中的数据字典,了解如何通过查询数据字典视图获取数据库的元数据信息,如...

    ORACLE速成手册 面向应用

    Oracle提供了几种伪列,它们并不是表中的实际列,但在查询时可以使用它们来获取额外的信息。常用的伪列包括: - **ROWID**:表示表中每一行的物理地址。 - **ROWNUM**:返回行号,常用于限制查询结果的数量。 - **...

    MS SQL Server树形结构表遍历的循环算法.pdf

    例如,在Oracle中,可以利用CONNECT BY子句实现树结构的递归查询,而在IBM DB2中,递归查询的SQL语句由初始查询、递归查询和最终查询三部分组成。但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL ...

    程序员的SQL金典7-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典.rar

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用

    SQL袖珍参考手册(第3版)

    - **递归查询**: 使用WITH RECURSIVE子句进行递归查询。 - **正则表达式**: 用于模式匹配的函数。 - **数据选择**: SELECT语句的使用。 - **字符串函数**: 包括字符串操作的各种函数。 - **子查询**: 嵌套查询的应用...

    使用BULK COLLECT, MERGE 语句提高sql执行效率

    详细介绍了使用 BULK COLLECT 进行批量操作 提高sql的执行效率 使用MERGE INTO USING 一条sql搞定 新增和修改 使用connect by 进行递归树查询

    sql树形数据处理示例(Jet wang 最新整理)

    我们可以使用`CONNECT BY`(Oracle)或`ANCESTOR AND DESCENDANT`(DB2)等语法来实现。 3. **路径枚举法**: 通过在数据表中存储每个节点的路径(例如,用逗号分隔的父节点ID),我们可以轻松地查询某个节点的...

Global site tag (gtag.js) - Google Analytics