Oracle Query 适用于 19c 但不适用于 11g

Oracle Query works for 19c but does not work in 11g

这个查询

SELECT (SELECT CERT_NBR 
        FROM (
          SELECT XREF.CERT_NBR, XREF.REQUEST_ID , XREF.AUDIT_TS 
          FROM B2B_XREF_CERT_QUOTE XREF 
          WHERE XREF.REQUEST_ID = REQ.REQUEST_ID  
          ORDER BY XREF.AUDIT_TS DESC
       ) WHERE rownum = 1) AS CERT_NBR 
FROM B2B_RT_REQUEST REQ, 
     B2B_RT_RESPONSE RES 
WHERE REQ.REQUEST_ID = RES.REQUEST_ID 
AND UPPER(TRIM(REQ.REQUEST_ID)) IN ('RF27117FE') 

在 19c 上运行良好但在 11g 上失败,谁能告诉我另一种编写同样适用于 11g 的方法是什么。

Oracle(和 MySQL)不允许嵌套的相关子查询引用。您可以改为使用 KEEP:

SELECT (SELECT MAX(CERT_NBR) KEEP (DENSE_RANK FIRST ORDER BY XREF.AUDIT_TS DESC)
        FROM B2B_XREF_CERT_QUOTE XREF 
        WHERE XREF.REQUEST_ID = REQ.REQUEST_ID  
       ) AS CERT_NBR 

您还应该学习正确、明确、标准、可读的JOIN语法。