如何在DB2中执行以下TSQL查询?我在根据查询结果创建临时表时遇到问题。
SELECT
COLUMN_1, COLUMN_2, COLUMN_3
INTO #TEMP_A
FROM TABLE_A
WHERE COLUMN_1 = 1 AND COLUMN_2 = 2
错误消息是:
“错误:SQL0104N在”“之后找到意外的令牌”#TEMP_A“。预期的令牌可能包括:”:“。SQLSTATE = 42601”
答案 0 :(得分:9)
在使用它之前,必须在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
然后填充它:
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
。
答案 1 :(得分:1)
也许“with”子句就是你要找的东西:
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
答案 2 :(得分:0)
事实证明,我没有权限创建临时表。