Postgresql
無法使用臨時表創建視圖
嗨,我正在做一個項目並想創建一個視圖。我在查詢中使用臨時表。誰能讓我知道我們如何創建這樣的視圖?
以下是我的查詢,我嘗試使用 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;