Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle nique,那么每个(pId,hdId)对可以获得多个记录。我相信最初的查询也会有同样的问题,这是对EMR(病历)系统的查询。pId是人形的,hdId识别医学观察(血压、脉搏、LDL等),因此,您不必担心(太多)重复pId/hdId/日期-每个文档都有一个_Oracle_Oracle10g_Subquery_Sql - Fatal编程技术网

Oracle nique,那么每个(pId,hdId)对可以获得多个记录。我相信最初的查询也会有同样的问题,这是对EMR(病历)系统的查询。pId是人形的,hdId识别医学观察(血压、脉搏、LDL等),因此,您不必担心(太多)重复pId/hdId/日期-每个文档都有一个

Oracle nique,那么每个(pId,hdId)对可以获得多个记录。我相信最初的查询也会有同样的问题,这是对EMR(病历)系统的查询。pId是人形的,hdId识别医学观察(血压、脉搏、LDL等),因此,您不必担心(太多)重复pId/hdId/日期-每个文档都有一个,oracle,oracle10g,subquery,sql,Oracle,Oracle10g,Subquery,Sql,nique,那么每个(pId,hdId)对可以获得多个记录。我相信最初的查询也会有同样的问题,这是对EMR(病历)系统的查询。pId是人形的,hdId识别医学观察(血压、脉搏、LDL等),因此,您不必担心(太多)重复pId/hdId/日期-每个文档都有一个值。但我认为这不起作用-您可能需要两天的观察(一次就诊的BMI百分位,另一次就诊的哮喘监测)。除非我遗漏了一些关于相关性的东西,这总是有可能的……相关性是在所有三列上进行的。基本查询将为一个人从ml.Obs检索所有行。然后,子查询选择obsda


nique,那么每个(pId,hdId)对可以获得多个记录。我相信最初的查询也会有同样的问题,这是对EMR(病历)系统的查询。pId是人形的,hdId识别医学观察(血压、脉搏、LDL等),因此,您不必担心(太多)重复pId/hdId/日期-每个文档都有一个值。但我认为这不起作用-您可能需要两天的观察(一次就诊的BMI百分位,另一次就诊的哮喘监测)。除非我遗漏了一些关于相关性的东西,这总是有可能的……相关性是在所有三列上进行的。基本查询将为一个人从ml.Obs检索所有行。然后,子查询选择obsdate为给定pId hdId的max()的行。请参阅David Aldridge的答案,了解其中的变化(性能可能会有所不同)。您可能希望重构查询,而不仅仅是修复您遇到的语法问题。考虑在你试图完成的问题上加上澄清。@戴维-“学究”:-艾伦-我只是不确定我应该在多大程度上讨论这个系统的内部。通常,我会使用一个内置视图,按pID/hdID进行分组,以获取最新的观察结果,但如果是在2009年,而您查询的是2008年,则该视图将失败。您可能希望重构查询,而不仅仅是修复您遇到的这个语法问题。考虑在你试图完成的问题上加上澄清。@戴维-“学究”:-艾伦-我只是不确定我应该在多大程度上讨论这个系统的内部。通常,我会使用一个内置视图,按pID/hdID进行分组,以获得最新的观察结果——但如果是在2009年,而您查询的是2008年,则该视图将失败。此版本的解释计划比我提出的版本要好一些,而且感觉也更快。我以前没碰到过这些--谢谢!您刚刚向我演示了如何使用分区方式,并解决了我的问题。这个版本的解释计划比我提出的计划要好一点,而且感觉也更快。我以前没碰到过这些--谢谢!您刚刚向我演示了如何使用分区,并解决了我的问题。
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
select ...
from
  ml.Person Person
  join ml.Obs on Person.PID = Obs.pId
where Obs.obsDate = (
    select max(obsDate)
    from ml.Obs Obs2
    where Obs2.pId = Obs.pId
      and obs2.hdId = Obs.hdId
      and Obs2.obsDate < {EndDate})
select ...
from   (
       SELECT pId,
              hdId,
              obsDate
              MAX(obsDate) over (partition by pId, hdId) maxDate
       FROM   ml.Obs
       WHERE  obsDate < {?EndDate}
       )
where  obsDate = maxDate
/