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

  • 本文关键字:选择 生日 查找 sql ms-access
  • 更新时间 :
  • 英文 :


我有一张表,病人,上面有出生日期。我需要运行一个查询,该查询仅返回那些比最小年龄大 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);

不要在谷歌上搜索"嵌套",那是另一回事。谷歌"子查询"。

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

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

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

如果大 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
)

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

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 年,基于您的日期

最新更新