Sql 子查询Oracle的外部联接问题
我浏览了这个问题的解决方案,不幸的是没有得到任何帮助。这里我得到了“列可能没有外部连接到子查询”的问题。Afaik With子句在这里没有帮助,因为这里的子查询引用表B.PFB,这是issue语句的摘录Sql 子查询Oracle的外部联接问题,sql,oracle,subquery,outer-join,Sql,Oracle,Subquery,Outer Join,我浏览了这个问题的解决方案,不幸的是没有得到任何帮助。这里我得到了“列可能没有外部连接到子查询”的问题。Afaik With子句在这里没有帮助,因为这里的子查询引用表B.PFB,这是issue语句的摘录 SELECT * FROM ( ( A a1 JOIN A a2 ON a1.temp = a2.temp1 ) JOIN C c1 ON c1.column1 = a2.column1 AND c1.column2 = a2.colum
SELECT *
FROM ( ( A a1
JOIN A a2
ON a1.temp = a2.temp1 )
JOIN C c1
ON c1.column1 = a2.column1
AND c1.column2 = a2.column2
AND c1.column3 = a2.column3 )
LEFT JOIN C c3
ON c3.column1 = a2.column1
AND c3.column2 = a2.column2
AND c3.column3 = a2.column3
AND c3.column4 =
(SELECT MAX(c4.column4)
FROM C c4
WHERE c4.column1 = a2.column1
AND c4.column2 = a2.column2
AND c4.column3 = a2.column3
) ;
提前感谢。我不知道Oracle不支持
on
子句中的子查询。在这种情况下,您可以使用分析函数轻松解决问题:
SELECT *
FROM A a1 JOIN
A a2
ON a1.temp = a2.temp1 JOIN
C c1
ON c1.column1 = a2.column1 AND
c1.column2 = a2.column2 AND
c1.column3 = a2.column3 LEFT JOIN
(SELECT c3.*,
MAX(c3.column4) OVER (PARTITION BY c3.column1, c3.column2, c3.column3) as maxcol4
FROM C c3
) c3
ON c3.column1 = a2.column1 AND
c3.column2 = a2.column2 AND
c3.column3 = a2.column3 AND
c3.column4 = c3.maxcol4;
我猜您可以在查询的其他地方使用分析函数来简化逻辑。我对分析函数不太熟悉。非常感谢。它很有效。