Partition Outer Join是Oracle 10g新增加的,用来方便“补足”在outer join的时候“漏掉”(NULL)的数据。
当两个用来做Join的表中的数据不“相当”的时候,如果我们希望在最终结果中其中一张表的所有records都不落下,一般会用到outer join。另外一个表中“缺失”的那部分数据自然都是以NULL来补足。但是如果我们希望缺失的那部分数据(NULL)能正常"补足'’ 出来,这个时候用Partiton Outer Join就会很方便,而且性能很好。
举个例子,来源这里
首先建立一个测试表customer_orders,
SQL>
1 CREATE TABLE customer_orders(name, dt, amt)
2 AS
3 SELECT *
4 FROM (
5 SELECT owner,
6 TRUNC(created) + MOD(ROWNUM, 6),
7 TRUNC(object_id/ROWNUM)
8 FROM all_objects
9 WHERE owner IN ('ORDSYS', 'WKSYS')
10 ORDER BY
11 DBMS_RANDOM.RANDOM
12 )
13* WHERE ROWNUM <= 1000
SQL> /
Table created.