Sql 选择X和X之间的最大(日期)位置
我试图只选择2015年最后一次预约的患者。理想情况如下所示:Sql 选择X和X之间的最大(日期)位置,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我试图只选择2015年最后一次预约的患者。理想情况如下所示: 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
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。最好的解决方法是什么?您很接近:
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';
选择p.name,p.姓氏
从人p内部连接
病人pa
在pa.pat_id=p.per_id连接上
预约
在a.pat_id=pa.pat_id上
按p.PERU id、p.name、p.姓氏分组
最大(a.日期)>=日期“2015-01-01”和
最大(a.日期)<日期'2016-01-01';
注:
- 您需要
分组依据
- 请注意,我将
包含在每个id
组中,因为不同的人可以有相同的名字
- 日期常量可以通过
关键字引入Date
- 不要在日期之间使用
;在Oracle中尤其如此,
列可以包含时间组件date
何处
或拥有
?我想你的意思是写拥有
,而不是在这里关闭何处
。@JuanCarlosOropeza。谢谢,我现在看到了。它与拥有一起工作。谢谢你@GordonLinoff!在分组中添加唯一的ID
,但不在选择列表中,这不是最好的建议。如果名称不唯一,则无法解释查询结果。