Postgresql

無法使用臨時表創建視圖

  • July 7, 2020

嗨,我正在做一個項目並想創建一個視圖。我在查詢中使用臨時表。誰能讓我知道我們如何創建這樣的視圖?

以下是我的查詢,我嘗試使用 WITH..AS ,但由於插入查詢而給出。

create temporary table temp_testtbl as
select id,dte,name,hrs_total
FROM dttbl.dts limit 0;

insert into temp_testtbl 
select id,dte,name,hrs_total
FROM dttbl.dts 
group by id,dte,name,hrs_total;

SELECT i.dte,
   idm.empl_id,
   1 AS entity_id,
   sum(i.hrs_total) AS myhrs
  FROM temp_testtbl i
  JOIN schema1.mytable idm ON idm.src_id = i.iex_id::text AND idm.src_type_id = 123 AND idm.end_dte IS NULL
  JOIN schema1.mytable idm2 ON idm2.empl_id = idm.empl_id AND idm2.src_type_id = 345 AND idm2.end_dte IS NULL
 GROUP BY i.dte, idm.empl_id limit 100;

一個視圖中不能有多個語句,您必須將整個事物表示為一個 SELECT。可以使用帶有 INSERT 的 SELECT 部分的子查詢來代替臨時表引用。下面應該給你一個粗略的想法,儘管原始 SQL 中存在我無法根據我擁有的資訊修復的錯誤(例如,第一個連接條件引用 i.iex_id,它在臨時表中不存在或子查詢)。

select i.dte, idm.empl_id, 1 as entity_id, sum(i.hrs_total) AS myhrs
FROM (
select id, dte, name, hrs_total
FROM dttbl.dts
group by id,dte,name,hrs_total
) AS i
JOIN schema1.mytable idm ON idm.src_id = i.iex_id::text AND idm.src_type_id = 123 AND idm.end_dte IS NULL
  JOIN schema1.mytable idm2 ON idm2.empl_id = idm.empl_id AND idm2.src_type_id = 345 AND idm2.end_dte IS NULL
 GROUP BY i.dte, idm.empl_id limit 100;

引用自:https://dba.stackexchange.com/questions/270557