Oracle连接选择结果

时间:2016-10-20 15:15:11

标签: oracle

我遇到了这个问题: 我有一个select语句,这是相当耗时的。 我必须自己加入结果。 我想做这样的事情:

Select table1.*, table2.Consumption
from (heavy select statement) table1 left outer join 
(same heavy statement) table2
on table1."id" = table2."id" and table1."Year" -1 = table2."Year"

我不想两次捕获相同的数据。我宁愿做像table1 table2这样的事情。这可能吗? 我需要这个应用程序,它执行查询但不能使用create或类似的东西,否则我会将数据存储在表中。

1 个答案:

答案 0 :(得分:0)

您可以使用公用表表达式(CTE)并实现重选语句的结果:

WITH heavy AS ( SELECT /*+ MATERIALIZE */ ... (heavy select statemenet) )
Select table1.*, table2.Consumption
from heavy table1 left outer join 
heavy table2
on table1."id" = table2."id" and table1."Year" -1 = table2."Year"