Sar*_*can 1 sql oracle subquery oracle10g
我只是尝试在Oracle语句的FROM子句中进行相关的子查询SELECT,但是却收到一条错误消息,指示我无法进行相关(某种Obs.pID无法识别的效果)。
应该行吗?
FROM ml.Person Person
JOIN ml.Obs ON Person.pID = Obs.pId
JOIN (SELECT ObsMax2.pId, ObsMax2.hdId
, MAX(ObsMax2.obsDate) as maxDate
FROM ml.Obs ObsMax2
WHERE ObsMax2.pId = Obs.pId
AND ObsMax2.obsDate < {?EndDate}
GROUP BY ObsMax2.pId, ObsMax2.hdId) ObsMax
ON Obs.pId = ObsMax.pId
AND Obs.hdId = ObsMax.hdId
AND Obs.obsDate = ObsMax.maxDate
Run Code Online (Sandbox Code Playgroud)
我的解决办法似乎是使它成为一个非相关子查询,并添加标准,保持它完全运行横行霸道,横行霸道,amu--子查询OOF对不起。
我宁愿弄清楚如何正确地关联它,但是,如果可能的话-像子查询一样工作的视图将永远需要构建。
您可以通过使用解析函数为每个pid和hdid标识最大obsDate来实现查询的这一部分的目的。
就像这样:
select ...
from (
SELECT pId,
hdId,
obsDate
MAX(obsDate) over (partition by pId, hdId) maxDate
FROM ml.Obs
WHERE obsDate < {?EndDate}
)
where obsDate = maxDate
/
Run Code Online (Sandbox Code Playgroud)