1

我正在处理一个查询,这让我很困惑。

我有一张包含很多提案的表格,并且他们有一个提案添加到数据库的创建日期。我想根据用户选择状态进行查询,然后查询仅显示最近创建的提案。

例子:

我有 4 个提案。2 来自特拉华州,于 2013 年 1 月 1 日和 2013 年 1 月 2 日创建。其他 2 个提案来自马里兰州,创建于 2013 年 1 月 3 日和 2014 年 1 月 4 日。如果用户在特拉华州输入,那么它应该在 2013 年 1 月 2 日显示提案,但如果用户在马里兰州输入,它应该在 2013 年 1 月 4 日显示提案。

首先,我试过这个

SELECT *
FROM Opportunity
WHERE (((Opportunity.CreationDate)=
    (select max(Opportunity.CreationDate) from Opportunity)));

这行得通,它向我显示了 1 个具有最新日期的机会。所以,这是成功的一半。但是当我试图指定一个状态时,我遇到了麻烦。它是 Access,所以我认为创建一个会提示用户输入状态的查询,然后进入第二个查询,该查询将查询最大日期字段的这些结果,但它没有。所以,我现在拥有的是:

查询 1

Select * FROM Opportunity它会出现一个弹出框,询问用户的状态。然后它会显示该状态的所有结果。

查询 2

SELECT * FROM OpportunityByState WHERE (((OpportunityByState.CreationDate)=(select max(Opportunity.CreationDate) from Opportunity)));

注意:我在此处发布之前编辑了 SQL 以使用所有字段符号 (*),因为 Access 写出了每个字段并且其中大约有 60 个,所以我认为没有人想看到那堵文字墙。

任何建议都会很棒,我希望我提供了足够的信息。

4

1 回答 1

1

通过弹出框,我假设您指的是访问参数。在这种情况下,以下将显示在出现的参数框中输入的州的最新记录。(我使用了示例数据库中的一些字段名称。)

SELECT TOP 1 FirstName, Surname, Office, StartDate 
FROM Opportunity 
WHERE State=[Which State] 
ORDER BY CreationDate DESC;

它按 CreationDate 的降序对记录进行排序,并获取第一个。但是,如果有多个相同日期的记录,它将返回所有这些。(这是 TOP n 在 Access 中的行为方式 - 它不解析重复项。)

于 2013-06-27T21:18:21.923 回答