脚本中间的 DB2 Insert Into Temp Table

DB2 Insert Into Temp Table in the middle of a script

如果我有多个临时表,并且我想将数据插入其中一个,然后继续创建更多的临时表,是否有办法做到这一点,或者我是否需要分解查询。

这是我想做的一个例子

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

基本上我的问题是我不知道如何以允许我之后继续创建更多临时表的方式编写插入。

谢谢!

一个普通的 Table 表达式 (CTE),WITH A AS (SELECT...) 不是实际的临时 table,您不能插入其中。

您似乎不需要 B,因为它与 A 中 selected 的列相同,只需 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 需要 select 其他列或来自另一个 table,则 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