Oracle SQL: Multiple With statement



我正在创建一个巨大的SQL查询:

Select * from (With tab1 AS ( Select * from abc)
,tab2 AS (select * from cde)
,tab3 AS (select * from tab2)
.
.
.
,tabz AS (select a, b from xyz
UNION
select a, b from cde)
Select tab1.*, tab3.* from 
tab1
LEFT OUTER JOIN tab2 ON tab1.a = tab2.b
...
LEFT OUTER JOIN tabz on tab1.a = tabz.a) A

现在使用上述作为 1 个表,我需要创建另一个长 SQL 来计算其他表表的百分比和其他内容。

假设上表是 A 然后

Select bbb.a,bbb.b from bbb
JOIN A ON bbb.a = A.a and then name it as B

然后终于加入A LEFT OUTER JOIN B.

这是一个庞大的查询,我知道我们不能有嵌套的 WITH 语句。有没有人有简单的方法来完成这个?还是任何建议? 我只需要使用 oracle SQL 查询来完成此操作。

我认为您可以将查询改写为:

WITH
tab1 AS (select * from abc)
,tab2 AS (select * from cde)
,tab3 AS (select * from tab2)
.
.
.
,tabz AS (select a, b from xyz
UNION
select a, b from cde)
,a as (
Select tab1.*, tab3.* 
from tab1
LEFT OUTER JOIN tab2 ON tab1.a = tab2.b
...
LEFT OUTER JOIN tabz on tab1.a = tabz.a
),
b as (
Select bbb.a,bbb.b from bbb JOIN A ON bbb.a = A.a
)
select * 
from a 
left join b on ...

最新更新