【问题标题】:Excluding identical returns from ACCESS query when names are equal当名称相等时,从 ACCESS 查询中排除相同的返回
【发布时间】:2020-10-16 09:09:15
【问题描述】:

在 MS ACCESS 中,我有一个表格,其中包含个人年度考试到期时的姓名和日期。该考试有效期为 12 个月,因此下一次考试通常在所有 12 个月到期之前完成。 表,称为“Exam”,看起来像这样(在真实的表名中是唯一的):

ID   Name   Dateexp
1    Peter  30/07/2020
2    john   10/09/2020
3    Bob    11/10/2019
4    Peter  25/06/2021

我有一个查询显示具有“有效”考试的人员。我看起来像这样:

SELECT Name As Name, Dateexp As Expiry FROM Overall WHERE Dateexp > now();

返回:

Name     Expiry
Peter    30/07/2020
John     10/09/2020
Peter    25/06/2021

问题是“彼得”完成了一项新考试,从而将他的有效期从 2020 年 7 月 30 日延长到 21 年 6 月 25 日,我只希望显示最新的考试。 查询应该返回:

Name     Expiry
Peter    25/06/2021
John     10/09/2020

我真的迷路了 - 有人知道如何解决这个问题吗? 谢谢!

【问题讨论】:

    标签: sql date ms-access select max


    【解决方案1】:

    你可以使用 max 和 having 子句:

    Select name, max(dateexp) as dateexp
    from overall
    Group by name
    Having max(dateexp) > now()
     
    

    【讨论】:

      【解决方案2】:

      如果我正确地关注了你,你可以使用聚合,并使用 having 子句进行过滤:

      select name, max(dateexp) as expiry 
      from overall 
      group by name
      having max(dateexp) > now();
      

      这会过滤其最新到期日期在未来的名称。

      【讨论】:

      • 你们俩同时解决了。-) 效果很好 - 非常感谢。
      • 投票支持你的额外解释
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2020-12-06
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多