【发布时间】:2016-04-23 15:48:12
【问题描述】:
我有 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)
【问题讨论】:
-
你忘了告诉你想要的结果
-
你是如何加入他们的?
-
@Prdp 期望的结果是加入两个查询。但我无法使用联合加入,因为两个查询中获取的列数不同
-
@AlexPoole 我尝试使用 union all 加入,但它不起作用
-
据我所见,CTE 是相同的,所以您想要一个针对 CTE 的单一查询,它将您现在拥有的两个联合起来 - 这样您就可以得到最小和最大日期?关于列数的错误似乎很清楚。但是,您为什么要使用工会来做这件事呢?