WITH 语句由一个或多个公共表表达式和一个 SELECT 语句组成。公共表表达式定义可以指定为后续 SELECT 语句的 FROM 子句中的表的已命名结果表。只有在使用 IBM® DB2
通用数据库™时,此选项才可用。
只能使用“SQL 构建器”创建 WITH 语句;不能使用“创建新的 SQL 语句”向导来创建它。
公共表表达式
可以以下方式使用公共表表达式:
- 代替视图,以避免创建该视图(当不需要对该视图进行常规使用且不使用定位型更新或删除时)
- 启用按列的分组,这个列从不确定的或具有外部操作的标量子选择或函数派生而来
- 当结果表基于主变量时
- 当需要在 FULLSELECT 中共享同一个结果表时
- 当需要使用递归派生结果时
要创建 WITH 语句:
- 切换至“数据”透视图中的“数据定义”视图。
- 展开包含数据库的项目或文件夹,然后展开数据库节点,直到您看到语句文件夹为止。
- 右键单击语句文件夹,然后在弹出菜单上单击。
- 输入语句的名称,然后单击确定。 “SQL 构建器”打开。
- 在“大纲”视图中查看 WITH 语句的结构。 将向 WITH 语句自动添加 SELECT 语句。这称为 WITH 语句
SELECT。您必须先定义公共表表达式,然后使用在公共表表达式中定义的表来完成
WITH 语句 SELECT。
- 要添加公共表表达式,在“大纲”视图中右键单击该 WITH 语句,然后在弹出菜单上单击添加公共表表达式。 要完成公共表表达式,将根据
SELECT 语句的结果集来定义临时表及其列。因为要定义的表只是临时的,所以它不会出现在“数据定义”视图的表文件夹中。在公共表表达式中定义临时表之后,可将它添加至 WITH 语句 SELECT。
- 在“大纲”视图中单击 WITH 语句下的公共表表达式节点。
- 展开公共表表达式节点,然后单击其中包含的 SELECT 语句。
- 为公共表表达式完成 SELECT 语句。
- 在“大纲”视图中单击公共表表达式,然后通过指定列名并单击添加
>> 向其添加列以完成列列表。 指定的列应该与在公共表表达式 SELECT 语句的 SELECT 子句中定义的列相对应。
- 必要时会以同一方式添加更多公共表表达式。
- 在“大纲”视图中选择 WITH 语句 SELECT。 它将名为
statementnameSELECT,其中 statementname 是 WITH 语句的名称。这是以整体方式应用于 WITH 语句的 SELECT 语句,并且它使用在 WITH 语句中定义的公共表表达式。
- 完成 WITH 语句 SELECT。
- 完成后,选择 来执行 SQL 语句。
输出将显示在“数据库输出”视图中。