当前位置:  开发笔记 > 编程语言 > 正文

在FROM列表中的Oracle相关子查询

如何解决《在FROM列表中的Oracle相关子查询》经验,为你挑选了1个好方法。

我只是尝试在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对不起。

我宁愿弄清楚如何正确地关联它,但是,如果可能的话-像子查询一样工作的视图将永远需要构建。



1> David Aldrid..:

您可以通过使用解析函数为每个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
/

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有