How to insert records using select statement?
-
04-03-2021 - |
سؤال
Hi I am working on one project, here what I am trying is, I want to insert records what I get using select statements into temp table. but it is giving error to me, can any one help me to solve this ?
ERROR: relation "temp_mytbl" does not exist SQL state: 42P01
following is my query
truncate table temp_mytbl;
create temporary table temp_mytbl as
select iex_id,dte,agent_name,schd_total
FROM source_xrx_iex6_sandy_1.iex6_agent_adh_sum limit 0;
insert into temp_mytbl
select iex_id,dte,agent_name,schd_total
FROM source_xrx_iex6_sandy_1.iex6_agent_adh_sum
group by iex_id,dte,agent_name,schd_total;
SELECT i.dte,
idm.empl_id,
1 AS entity_id,
sum(i.schd_total) AS s_schdhours
FROM temp_mytbl i
JOIN source_odw_usac.t_incontact_agentstatelog a ON a.winid = i.iex_id::text
JOIN reporting_prod.idm_dte idm ON idm.src_id = a.agent_no AND idm.src_type_id = 618 AND soar_date(a.calendar_date_key) >= idm.start_dte AND soar_date(a.calendar_date_key) <= COALESCE(idm.end_dte, now()::date)
GROUP BY i.dte, idm.empl_id limit 100;
المحلول
WITH temp_mytbl AS ( -- without aggregation in output expression / HAVING clause
-- GROUP BY must be replaced with DISTINCT
-- which is less expensive
SELECT DISTINCT iex_id, dte, agent_name, schd_total
FROM source_xrx_iex6_sandy_1.iex6_agent_adh_sum
)
SELECT i.dte, idm.empl_id, 1 AS entity_id, SUM(i.schd_total) AS s_schdhours
FROM temp_mytbl i
JOIN source_odw_usac.t_incontact_agentstatelog a ON a.winid = i.iex_id::text
JOIN reporting_prod.idm_dte idm ON idm.src_id = a.agent_no
AND idm.src_type_id = 618
AND soar_date(a.calendar_date_key) >= idm.start_dte
AND soar_date(a.calendar_date_key) <= COALESCE(idm.end_dte, now()::date)
GROUP BY i.dte, idm.empl_id /* , entity_id */
-- LIMIT without ORDER BY makes no sense
ORDER BY i.dte /* or another sorting expression */
LIMIT 100;
or the same in subquery form
SELECT i.dte, idm.empl_id, 1 AS entity_id, SUM(i.schd_total) AS s_schdhours
FROM ( SELECT DISTINCT iex_id, dte, agent_name, schd_total
FROM source_xrx_iex6_sandy_1.iex6_agent_adh_sum
) i
JOIN source_odw_usac.t_incontact_agentstatelog a ON a.winid = i.iex_id::text
JOIN reporting_prod.idm_dte idm ON idm.src_id = a.agent_no
AND idm.src_type_id = 618
AND soar_date(a.calendar_date_key) >= idm.start_dte
AND soar_date(a.calendar_date_key) <= COALESCE(idm.end_dte, now()::date)
GROUP BY i.dte, idm.empl_id
ORDER BY i.dte
LIMIT 100;
نصائح أخرى
create table #temp_mytbl (
iex_id int,
dte int,
agent_name varchar(10),
schd_total float
)
insert into #temp_mytbl
select iex_id,dte,agent_name,schd_total
FROM source_xrx_iex6_sandy_1.iex6_agent_adh_sum
group by iex_id,dte,agent_name,schd_total;
SELECT i.dte,
idm.empl_id,
1 AS entity_id,
sum(i.schd_total) AS s_schdhours
FROM #temp_mytbl i
JOIN source_odw_usac.t_incontact_agentstatelog a ON a.winid = i.iex_id::text
JOIN reporting_prod.idm_dte idm ON idm.src_id = a.agent_no AND idm.src_type_id = 618 AND soar_date(a.calendar_date_key) >= idm.start_dte AND soar_date(a.calendar_date_key) <= COALESCE(idm.end_dte, now()::date)
GROUP BY i.dte, idm.empl_id limit 100;
DROP TABLE #temp_mytbl
لا تنتمي إلى dba.stackexchange