¿Podemos tener múltiples "CON AS" en un solo sql-Oracle SQL
Tenía una pregunta muy simple: Oracle permite múltiples "CON AS" en una sola instrucción sql.
Ejemplo:
WITH abc AS( select ......)
WITH XYZ AS(select ....) /*This one uses "abc" multiple times*/
Select .... /*using XYZ multiple times*/
Puedo hacer que la consulta funcione repitiendo la misma consulta varias veces, pero no quiero hacer eso, y aprovechar "CON AS". Parece un requisito simple, pero oracle no me permite:
ORA-00928: falta la palabra clave SELECT
4 answers
Puedes hacer esto como:
WITH abc AS( select
FROM ...)
, XYZ AS(select
From abc ....) /*This one uses "abc" multiple times*/
Select
From XYZ.... /*using abc, XYZ multiple times*/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-29 09:41:42
La sintaxis correcta es -
with t1
as
(select * from tab1
where conditions...
),
t2
as
(select * from tab2
where conditions...
(you can access columns of t1 here as well)
)
select * from t1, t2
where t1.col1=t2.col2;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-29 09:42:49
Sí puedes...
WITH SET1 AS (SELECT SYSDATE FROM DUAL), -- SET1 initialised
SET2 AS (SELECT * FROM SET1) -- SET1 accessed
SELECT * FROM SET2; -- SET2 projected
10/29/2013 10:43:26 AM
Siga el orden en el que debe inicializarse en Expresiones de Tabla Comunes
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-08 15:46:27
Aditya u otros, puede unirse o emparejar t2 con t1 en su ejemplo, es decir, traducido a mi código,
with t1 as (select * from AA where FIRSTNAME like 'Kermit'),
t2 as (select * from BB B join t1 on t1.FIELD1 = B.FIELD1)
No tengo claro si solo DÓNDE se admite para unirse, o qué enfoque de unión se admite dentro de la entidad 2nd WITH. Algunos de los ejemplos tienen el WHERE A = B down en el cuerpo de las cláusulas select "below" the WITH.
El error que estoy obteniendo siguiendo estos CON declaraciones es que los identificadores (nombres de campo) en B no se reconocen, abajo en el cuerpo de la resto del SQL. Así que la sintaxis WITH parece funcionar bien, pero no puede acceder a los resultados de t2.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-12 23:18:35