Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 加入CTE时出错_Oracle_Join - Fatal编程技术网

Oracle 加入CTE时出错

Oracle 加入CTE时出错,oracle,join,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

我有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)

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

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)
第二个也有类似的问题


祝你好运。

你忘了告诉你想要的结果你要加入他们吗?@Prdp想要的结果是加入两个查询。但是我不能使用union加入,因为在两个查询中提取的列数都是有限的different@AlexPoole我试着使用union all加入,但它不起作用,因为我能看到CTE是一样的,所以你想要一个针对CTE的单一查询,这是你现在拥有的两个联合体-那么你得到了最小和最大日期?关于列数的错误似乎很明显。你为什么要和一个工会合作?