我们可以在单个sql中使用多个“WITH AS” – Oracle SQL

我有一个非常简单的问题:oracle允许多个“WITH AS”在一个单一的SQL语句。

例:

WITH abc AS( select ......) WITH XYZ AS(select ....) /*This one uses "abc" multiple times*/ Select .... /*using XYZ multiple times*/ 

我可以通过多次重复相同的查询来使查询工作,但不想这样做,并利用“WITH AS”。 这似乎是一个简单的要求,但甲骨文不允许我:

ORA-00928:缺lessSELECT关键字

你可以这样做:

 WITH abc AS( select FROM ...) , XYZ AS(select From abc ....) /*This one uses "abc" multiple times*/ Select From XYZ.... /*using abc, XYZ multiple times*/ 

正确的语法是 –

 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; 

是的你可以…

 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 

按照公用表expression式中的顺序进行初始化

Aditya或其他人,你可以join或匹配t2与你的例子中的t1,即翻译为我的代码,

 with t1 as (select * from AA where FIRSTNAME like 'Kermit'), t2 as (select * from BB B join t1 on t1.FIELD1 = B.FIELD1) 

我不清楚是否仅支持joinWHERE,或者在第二个WITH实体中支持哪种join方法。 有些例子在WHERE A = B下面的WITH子句中select“下面”。

我得到的这些WITH声明中的错误是B中的标识符(字段名称)无法识别,在SQL的其余部分的主体中。 所以WITH语法似乎运行正常,但不能访问t2的结果。