Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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

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
Sql 选择X和X之间的最大(日期)位置_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

Sql 选择X和X之间的最大(日期)位置

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

我试图只选择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子句中不允许使用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
    ,但不在选择列表中,这不是最好的建议。如果名称不唯一,则无法解释查询结果。