gpt4 book ai didi

sql - 无法在 View 定义 PostgreSQL 中创建临时表

转载 作者:行者123 更新时间:2023-11-29 11:58:44 24 4
gpt4 key购买 nike

CREATE  VIEW  viewRebalancingLog AS


CREATE TEMP TABLE newSessionID
(
ilog_id INT,vch_service_name VARCHAR(200), vch_service_id VARCHAR(200),iuser_id INT,vch_session_id VARCHAR(200),
isequence_id INT,vch_message_type VARCHAR(200),vch_message_sub_type VARCHAR(200),vch_message VARCHAR,
dt_service_log_time TIMESTAMP,dt_inserted_date TIMESTAMP
)


INSERT INTO newSessionID
("ilog_id", "vch_service_name", "vch_service_id" , "iuser_id" , "vch_session_id" , "isequence_id" ,
"vch_message_type" ,"vch_message_sub_type","vch_message","dt_service_log_time","dt_inserted_date"
)
SELECT
"LOGS"."ilog_id", "LOGS"."vch_service_name","LOGS"."vch_service_id","LOGS"."iuser_id" ,"LOGS"."vch_session_id" ,
"LOGS"."isequence_id" ,"LOGS"."vch_message_type" ,"LOGS"."vch_message_sub_type" ,"LOGS"."vch_message",
"LOGS"."dt_service_log_time","LOGS"."dt_inserted_date"
FROM services_logs_stg AS "LOGS"
WHERE ("LOGS".dt_service_log_time AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') :: DATE =
(((NOW() -
INTERVAL '2 day') :: TIMESTAMP) AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') :: DATE

最佳答案

您不能在 VIEW 中创建临时表。检查CREATE VIEW :

CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ] [ WITH ( view_option_name [= view_option_value] [, ... ] ) ] AS query

为什么不使用简单的 CREATE VIEW ... AS SELECT:

CREATE  VIEW  viewRebalancingLog AS
SELECT
"LOGS"."ilog_id", "LOGS"."vch_service_name","LOGS"."vch_service_id","LOGS"."iuser_id" ,"LOGS"."vch_session_id" ,
"LOGS"."isequence_id" ,"LOGS"."vch_message_type" ,"LOGS"."vch_message_sub_type" ,"LOGS"."vch_message",
"LOGS"."dt_service_log_time","LOGS"."dt_inserted_date"
FROM services_logs_stg AS "LOGS"
WHERE ("LOGS".dt_service_log_time AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') :: DATE =
(((NOW() -
INTERVAL '2 day') :: TIMESTAMP) AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') :: DATE;

如果您需要某种中间步骤,请考虑使用 common table expressions .

编辑:

No,this is not end of the Query that i have posted, i have more temp table and JOIN each other. my goal is: 1.create temp table1, 2.insert data in temp table1 than 3.create temp table 2 4.insert data in temp table 2 5.create temp table 3 6.insert data from temp1 join temp2 7. select * from temp3

您可以像我之前建议的那样简单地使用 CTE:

WITH temp1 AS (
SELECT ...
FROM ...
), temp2 AS (
SELECT ...
FROM ...
)
SELECT *
FROM temp1
JOIN temp2
ON ...

关于sql - 无法在 View 定义 PostgreSQL 中创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com