insert - DB2 在脚本中间插入临时表
问题描述
如果我有几个临时表,并且我想将数据插入其中一个,然后继续创建更多临时表,是否有办法做到这一点,或者我是否需要分解我的查询。
这是我想做的一个例子
WITH A AS (SELECT Column1, Column2, Column3 FROM SomeTable WHERE SomeConditionA), -- Inital Temp Table
B AS(SELECT Column1, Column2, Column3 FROM SomeTable WHERE SomeConditionB), --Second Temp Table
INSERT INTO A SELECT * FROM B --Insert Table B into Table A
C AS(...), --Derives From A
D AS(...), --Derives From C
E AS(...) --Derives From D
SELECT * FROM E --Final Select Statement
本质上我的问题是我不知道如何以一种允许我之后继续创建更多临时表的方式编写插入。
谢谢!
解决方案
公用表表达式 (CTE)WITH A AS (SELECT...)
不是实际的临时表,您不能插入其中。
看来您不需要 B,因为它与 A 中选择的列相同,只是OR
条件
WITH A AS (SELECT Column1, Column2, Column3
FROM SomeTable
WHERE SomeConditionA
or SomeConditionB),
C AS(...), --Derives From A
D AS(...), --Derives From C
E AS(...) --Derives From D
SELECT * FROM E --Final Select Statement
如果 B 需要选择其他列或从另一个表中选择,则UNION ALL
(如果可以重复或不可能)或UNION
(删除任何重复的行)结果。
WITH A AS (SELECT Column1, Column2, Column3
FROM SomeTable
WHERE SomeConditionA
UNION ALL
SELECT Column4, Column5, Column6
FROM SomeTable
WHERE SomeConditionB),
C AS(...), --Derives From A
D AS(...), --Derives From C
E AS(...) --Derives From D
SELECT * FROM E --Final Select Statement
推荐阅读
- php - 如何在 php 中使用图形 api 在 Instagram 上发帖
- amazon-web-services - 如何设计在 Lambda 函数上运行的可扩展 ETL
- c# - 游戏对象相对于父对象不在同一位置
- linux - 使用 bash 迭代地排序和就地替换文件
- excel - 循环内的运行时错误 91(对象变量或未设置块变量),但代码在其外工作
- ansible - Ansible-Playbook:错误消息“找不到任何要使用的 pip3。需要安装 pip”
- pandas - 使用自己的计算熊猫创建距离矩阵
- java - 在构造函数中使用多捕获异常类型
- c# - 获取所有公共静态方法返回一个空列表
- symfony - Symfony 4 EntityManager 多数据库