我将如何在DB2中执行以下TSQL查询?我在根据查询结果创建临时表时遇到问题。

SELECT
COLUMN_1, COLUMN_2, COLUMN_3
INTO #TEMP_A
FROM TABLE_A
WHERE COLUMN_1 = 1 AND COLUMN_2 = 2

错误消息是:

最佳答案

您必须先在DB2中declare a temp table才能使用它。使用您正在运行的相同查询:

DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME AS (
    SELECT COLUMN_1, COLUMN_2, COLUMN_3
    FROM TABLE_A
) DEFINITION ONLY

或“手动”定义列:
DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME (
     COLUMN_1 CHAR(10)
    ,COLUMN_2 TIMESTAMP
    ,COLUMN_3 INTEGER
)

然后填充它:
INSERT INTO SESSION.YOUR_TEMP_TABLE_NAME
SELECT COLUMN_1, COLUMN_2, COLUMN_3
FROM TABLE_A
WHERE COLUMN_1 = 1
  AND COLUMN_2 = 2

它不像SQL Server那样直接。 :)
即使它被称为“全局”临时表,它也仅在当前 session 中存在。注意,所有临时表都应以SESSION模式作为前缀。如果您不提供架构名称,则将隐含SESSION

关于tsql - db2等同于tsql临时表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11422572/

10-12 00:23
查看更多