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 "
5
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