Я только что попытался сделать коррелированный подзапрос в предложении FROM
оператора SELECT
в Oracle, но мне выдали ошибку, указывающую, что я не мог сделать корреляцию (что-то, что 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
Мой обходной путь может заключаться в том, чтобы сделать его некоррелированным подзапросом и добавить критерии в подзапрос, которые не позволяют ему работать полностью amuck, amuck, amu - oof Извините.
Я бы предпочел выяснить, как правильно соотнести его, хотя, если возможно - представление, которое работает как этот подзапрос, строится вечно.