加入CTE时出错

时间:2016-04-23 15:48:12

标签: oracle join

我有2个CTE。当我尝试加入它们时,我收到一条错误消息" ORA-01789:"。我可以合并2 CTE。有没有其他方法可以获得所需的结果?

WITH IMPORT_CTE 
AS  ((select A.*
FROM IMPORT_REGISTRY_ERROR_LOG_1 A
INNER JOIN (select distinct POD_ID,CONFLICTED_POD_ID,ERROR_CODE
             FROM IMPORT_REGISTRY_ERROR_LOG_1 
             GROUP BY POD_ID,CONFLICTED_POD_ID,ERROR_CODE
             HAVING COUNT(*) > 1) B
on  A.POD_ID = B.POD_ID AND A.CONFLICTED_POD_ID = B.CONFLICTED_POD_ID AND A.ERROR_CODE = B.ERROR_CODE  ) order by a.pod_id desc)
select t1.*
from IMPORT_CTE t1
where t1.insert_date =(select max(t2.insert_date)
                        from IMPORT_CTE t2
                       where t2.POD_ID =t1.POD_ID)


WITH IMPORT_CTE1 
AS  ((select A.*
FROM IMPORT_REGISTRY_ERROR_LOG_1 A
INNER JOIN (select distinct POD_ID,CONFLICTED_POD_ID,ERROR_CODE
             FROM IMPORT_REGISTRY_ERROR_LOG_1 
             GROUP BY POD_ID,CONFLICTED_POD_ID,ERROR_CODE
             HAVING COUNT(*) > 1) B
on  A.POD_ID = B.POD_ID AND A.CONFLICTED_POD_ID = B.CONFLICTED_POD_ID AND A.ERROR_CODE = B.ERROR_CODE  ) order by a.pod_id desc)
select t1.insert_date 
from IMPORT_CTE1 t1
where t1.insert_date =(select min(t2.insert_date)
                        from IMPORT_CTE1 t2
                       where t2.POD_ID =t1.POD_ID)

1 个答案:

答案 0 :(得分:0)

在每个查询中都有一组额外的括号。第一个显然应该是:

WITH IMPORT_CTE AS
      (select A.*
         FROM IMPORT_REGISTRY_ERROR_LOG_1 A
         INNER JOIN (select distinct POD_ID,CONFLICTED_POD_ID,ERROR_CODE
                       FROM IMPORT_REGISTRY_ERROR_LOG_1 
                       GROUP BY POD_ID,CONFLICTED_POD_ID,ERROR_CODE
                       HAVING COUNT(*) > 1) B
           on A.POD_ID = B.POD_ID AND
              A.CONFLICTED_POD_ID = B.CONFLICTED_POD_ID AND
              A.ERROR_CODE = B.ERROR_CODE
         order by a.pod_id desc)
select t1.*
  from IMPORT_CTE t1
  where t1.insert_date = (select max(t2.insert_date)
                            from IMPORT_CTE t2
                            where t2.POD_ID = t1.POD_ID)

第二个有类似的问题。

祝你好运。