选择X和X之间的MAX(DATE)

时间:2019-05-13 15:48:42

标签: sql oracle oracle-sqldeveloper

我正在尝试仅选择在2015年接受LAST任命的患者。理想的情况如下:

Select person.name, person.surname
inner join patient on patient.pat_id=person.per_id
inner join appointment on appointment.pat_id=patient.pat_id
where MAX(appointment.date) between '31.12.2014'and '01.01.2016'

但是WHERE子句中不允许使用MAX。最好的解决方法是什么?

1 个答案:

答案 0 :(得分:2)

您很亲密:

Select p.name, p.surname
from person p inner join
     patient pa
     on pa.pat_id = p.per_id join
     appointment a
     on a.pat_id = pa.pat_id
group by p.per_id, p.name, p.surname
having max(a.date) >= date '2015-01-01' and
      max(a.date) < date '2016-01-01';

注意:

  • 您需要group by
  • 请注意,我将per_id包括在group by中,因为不同的人可以具有相同的名字。
  • 可以使用date关键字引入日期常量。
  • 请勿将between与日期一起使用;在Oracle中,尤其如此,其中date列可以具有时间成分。