`

DB2公共表表达式(with)

    博客分类:
  • DB2
阅读更多

1、表表达式
  如果只需要单个查询的视图定义,可使用表表达式。

  表表达式是临时的,只在 SQL 语句的使用期限内有效;表表达式不能共享,但它们比视图更灵活。任何授权的用户都可共享视图定义。

2、公共表表达式

  公共表表达式是在全查询的开头使用 WITH 关键字定义的命名结果表。公共表表达式是您创建以在复杂查询之中使用的表表达式。在查询的开头使用 WITH 子句定义并命名公共表表达式。对公共表表达式的重复引用使用同一个结果集。相比之下,如果使用嵌套表表达式或视图,则每次都将重新生成结果集,其结果可能各不相同。
例如: 

WITH T1(COL1,NEW_COL1) AS(

SELECT COL1,COUNT(COL2) AS NEW_COL1 FROM A

WHERE COL3=?

GROUP BY COL1,COL2

)

SELECT * FROM T1

 再例如:

WITH T1(COL1,NEW_COL1) AS(

SELECT COL1,COUNT(COL2) AS NEW_COL1 FROM TABLE_A

WHERE COL3=?

GROUP BY COL1,COL2

),

T2(COL1,COL2) AS(

SELECT COL1,COL2 FROM  TABLE_B WHERE COL1=?

)

SELECT A.* FROM T1 A

JOIN T2 B ON A.N_CODE=B.N_TYPE

 
分享到:
评论

相关推荐

    DB2公共表表达式(WITH语句使用).pdf

    【DB2公共表表达式(WITH语句使用)】 公共表表达式(Common Table Expression,简称CTE)在DB2数据库系统中是一个非常强大的工具,主要用于定义临时的、只在查询过程中存在的表。WITH语句使得复杂的查询变得更加...

    将 CONNECT BY 移植到 DB2

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

    DB2到GreenPlum/PostgreSQL的转换指南

    ##### 2.4.1 使用WITH子句顶部的短语定义公共表表达式 WITH子句用于定义查询中多次使用的子查询,作为临时表的一种形式。DB2与GreenPlum/PostgreSQL都支持WITH子句,但在语法和功能上可能存在细微差异。 ##### ...

    DB2 SQL 精萃.pdf

    DB2公共表表达式(WITH 语句的使用) `WITH` 语句用于定义一个临时的、只在当前查询中可见的表。例如: ```sql WITH cte AS (SELECT name, salary FROM employees WHERE department_id = 1) SELECT * FROM cte; ```...

    ORACLE转DB2对照全解

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

    DB2 V8数据库基础 V1.0.20060426.doc

    - **3.3.5 WITH表达式**:公共表表达式,用于定义子查询。 - **3.3.6 CASE表达式**:用于根据条件返回不同的值。 - **3.3.7 CAST表达式**:用于转换数据类型。 - **3.3.8 查看一个SQL语句执行需要的时间的命令**:...

    DB2循环递归实例很有用的

    在DB2中,循环递归查询主要通过使用Common Table Expressions(CTEs,公共表表达式)来实现。CTE是一种临时的结果集,它可以在同一个查询语句中被多次引用。对于循环递归查询而言,CTE允许用户定义一个递归结构,...

    DB2递归.docx

    在DB2中,递归查询是通过公共表表达式(CTE)来实现的,它允许查询自身以形成递归链。以下是对DB2递归SQL的详细解释: 1. **递归查询的基本结构** - **初始查询**:这是CTE中对基础表进行查询的部分,不引用CTE...

    DB2错误解决手册

    - **01605** - 递归公共表表达式可能导致无限循环。 - **01606** - 节点或系统数据库目录为空。 - **01607** - 只读事务中节点时间差超过定义阈值。 - **01608** - 替换不受支持的值。 - **01609** - 生成的...

    DB2错误代码.doc

    | 01605 | 递归公共表表达式可能包含无限循环。 | | 01606 | 节点或系统数据库目录是空的。 | | 01607 | 只读事务中节点的时间差超过定义的阈值。 | | 01608 | (此处信息不完整) | 这一类代码表示虽然操作已经完成...

    db2错误代码

    - **01605**:递归公共表表达式可能包含无限循环。 - **01606**:节点或系统数据库目录是空的。 - **01607**:只读事务中节点的时间差超过定义的阈值。 - **01608**:已经... #### 其他类代码简述 除了以上提到的类...

    软件开发高手须掌握的4大SQL精髓语句(三)

    WITH AS语句,又称为子查询片段或者公共表表达式(Common Table Expression, CTE),是一种非常灵活且强大的SQL特性。它允许开发者定义临时的结果集,并在后续的查询中重复使用这些结果集,从而提高代码的可读性和...

    DB2 错误代码

    - **01605**:递归公共表表达式可能包含无限循环。 - **01606**:节点或系统数据库目录是空的。 - **01607**:只读事务中节点的时间差超过定义的阈值。 - **01608**:... 3. **02 - 无数据** - **02000**:SQL...

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

    WITH子查询,也称为公共表表达式(Common Table Expression,简称CTE),自SQL-99标准引入,Oracle从9i版本开始支持。在11GR2中,Oracle引入了递归功能,使得WITH子查询的用途更加广泛。 递归WITH子查询的基本结构...

    程序员的SQL金典.pdf 高清 下载

    表关联是指通过公共列将多个表连接起来形成更复杂的关系。常用的关联方式有内连接、外连接等。 **1.2.9 数据库的语言——SQL** SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的...

    程序员的SQL金典6-8

    - 通过公共字段连接不同表的方式。 - **数据库的语言——SQL** - 用于管理和查询数据库的标准语言。 - **DBA与程序员** - **DBA(Database Administrator)**:负责数据库的维护和管理。 - **程序员**:使用SQL...

Global site tag (gtag.js) - Google Analytics