equivalente db2 da tabela temp tsql

como faria a seguinte consulta TSQL em DB2? Estou tendo problemas para criar uma tabela temporária com base nos resultados de uma consulta.

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

a mensagem de erro é:

"Error: Sql0104n An unexpected token" #TEMP_A "was found following"". Os tokens esperados podem incluir:":". SQLSTATE=42601 "

Author: Brian Tompsett - 汤莱恩, 2012-07-11

3 answers

Tem de declarar uma tabela temporária em DB2 antes de a poder usar:

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

Então poule:

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
Não é tão simples como no servidor SQL. :) E apesar de se chamar uma tabela temporária "global", ela só existe para a sessão atual. Note que todas as tabelas temporárias devem ser prefixadas com o esquema SESSION. Se você não fornecer um nome de esquema, então SESSION será implícito.
 9
Author: bhamby, 2013-02-28 14:07:42

Talvez a cláusula" com " seja o que procuras:

with TEMP_A as (
  SELECT COLUMN_1, COLUMN_2, COLUMN_3
  FROM TABLE_A
  WHERE COLUMN_1 = 1 AND COLUMN_2 = 2
)
-- now use TEMP_A
select * from TEMP_A
 1
Author: Fred B., 2014-02-24 10:03:41

Como se verificou, eu não tinha permissões para criar tabelas de temperatura.

 0
Author: I_AM_JARROD, 2018-04-23 15:47:43