我只是尝试在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
我的解决办法似乎是使它成为一个非相关子查询,并添加标准,保持它完全运行横行霸道,横行霸道,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 /