脚本中间的 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
如果我有多个临时表,并且我想将数据插入其中一个,然后继续创建更多的临时表,是否有办法做到这一点,或者我是否需要分解查询。
这是我想做的一个例子
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