我正在处理一个查询,它把我难住了。
我有一个有很多提案的表,它们有一个提案添加到数据库中的创建日期。我想根据用户选择一个州进行查询,然后查询只显示最近创建的提案。
示例:
我有4个建议。2来自特拉华州,创建于2013年1月1日和2013年1月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个字段,所以我认为没有人会想要看到那堵墙的文本。
任何建议都会很棒,我希望我提供了足够的信息。
发布于 2013-06-28 05:18:22
通过弹出框,我假设你指的是一个访问参数。在这种情况下,下面将显示在出现的参数框中输入的状态的最新记录。(我使用了我的示例数据库中的一些字段名。)
SELECT TOP 1 FirstName, Surname, Office, StartDate
FROM Opportunity
WHERE State=[Which State]
ORDER BY CreationDate DESC;
它按照CreationDate的降序对记录进行排序,并获取第一个记录。但是,如果有多个记录具有相同的日期,它将返回所有这些记录。(这是TOP n在Access中的行为方式-它不解析重复项。)
https://stackoverflow.com/questions/17345297
复制相似问题