如何从生日列中找到最低年龄,但仅选择比最低年龄大3岁的年龄

时间:2019-07-11 20:48:57

标签: sql ms-access

我有一个表PATIENT,上面有生日。我需要运行一个查询,该查询仅返回比最小年龄大3岁的那些患者。

因为我的在线课程很糟糕,所以我试图找到一个有关嵌套sql语句的入门教程。

据我所知:

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT *
FROM PATIENT
GROUP BY Birthday
ORDER BY Birthday DESC
SELECT MIN(Birthday) AS MinAges
FROM PATIENT);

4 个答案:

答案 0 :(得分:0)

不要在Google上搜索“嵌套”,这是另一回事。 Google“子查询”。

SELECT Phone, Birthday
  FROM PATIENT
 WHERE Birthday - 2 > (
           SELECT MIN(Birthday)
             FROM PATIENT
           );

答案 1 :(得分:0)

在这里,我们从患者中选择生日较大的两个字段,然后从嵌套选择中选择最近生日并加3年的嵌套字段。希望这为您指明了正确的方向。

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT DateAdd(yy, 3, Cast(MIN(Birthday) As datetime))
FROM PATIENT);

答案 2 :(得分:0)

如果您的年龄比您大3岁,那么您希望生日的岁数相差3,那么您可以使用DateAdd()函数:

select phone, birthday from patient
where year(DateAdd('yyyy', -3, birthday)) = (
  select year(min(birthday))
  from patient
)

select phone, birthday from patient
where year(birthday) - 3 = (
  select year(min(birthday))
  from patient
)

答案 3 :(得分:0)

您可以使用子查询来获取最早的生日,然后进行日期比较。看起来像:

select p.*
from patient as p,
     (select max(birthday) as max_birthday
      from patient
     ) as m
where p.birthday <= dateadd("yyyy", -3, m.max_birthday) and
      p.birthday > dateadd("yyyy", -4, m.max_birthday);

请注意,这恰好是3年,具体取决于您所在的日期