我正在尝试仅选择在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。最好的解决方法是什么?
答案 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
列可以具有时间成分。