这个查询有什么问题(甲骨文)
with latestplans as (
select plan_id, max(plan_last_changed_date)
from idp.trainee_search_vw
group by plan_id
)
select plan_id, training_organization
from idp.trainee_search_vw
where plan_id in (latestplans.plan_id);
错误是:
ora-00904编号: "LATESTPLANS"."PLAN_ID": invalid identifier
我正在定义一个临时表,其中包含视图中的一列和另一个最大分组的列。然后,我需要选择temp表的列。
目标是仅为最新计划选择某些属性,而视图最初列出所有计划。
内部查询工作正常。
4条答案
按热度按时间lstz6jyr1#
你需要一个
select
:CTE的行为类似于表或视图名称。你不能只使用它们而不引用它们
from
条款。iugsix8n2#
在你的询问中,你没有提到
latestplans
以你的观点trainee_search_vw
.fhity93d3#
它已经解释了您使用cte的方式有什么问题。
不过,我要指出:
您的查询似乎不像您描述的那样:外部查询应该在最长日期而不是最短日期进行过滤
plan_id
; 实际上,查询返回表中的所有行你不需要扫描表两次就可以得到你想要的结果;你可以用窗口函数来解决这个最大的n个一组的问题
查询:
您还可以使用聚合和oracle的
keep
语法:1tu0hz3e4#
此外,还可以使用where after join