SQL(访问) - 仅显示更多信息行

时间:2012-11-05 16:52:06

标签: sql ms-access-2007

早上好。

我目前正在构建一个包含名称,文档类型和到期日期的报告。查询基于是否曾请求过文档(=是)以及个人的角色/职位。遗憾的是,由于数据库的设计方式以及用户如何使用数据库,一个人可能有两个角色(首席协调员/协调员),因此,数据库中有两个单独的条目(ID)。但是,用户通常只在其中一个条目的“到期日期”中输入。

因此,现在当我收集每个角色的名称,文档和到期日期的查询,然后通过Union组合它们时,每个人可能会有多个条目,例如:

Smith, John AAA 11-5-2012
Smith, John AAA
Doe, Jane AAA 
Doe, Jane AAA 11-11-2011

有没有办法让我能够保留包含更多信息的行?

注意我不希望基于“Date<> Null”来支付它,因为有时我们可能已经请求了该文档,但我们还没有收到它以进入到期日期我们如果我们需要再次请求,我们需要能够看到这些数据。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

Max和Group By可能适合:

SELECT Docs.Person, Docs.Doc, Max(Docs.DateEntered) AS MaxOfDateEntered
FROM Docs
GROUP BY Docs.Person, Docs.Doc;

文档是您的表或查询的名称。

输入:

Person      Doc DateEntered
Smith,John  AAA 11-5-2012
Smith,John  AAA 
Doe,Jane    AAA 
Doe,Jane    AAA 

结果:

Person      Doc MaxOfDateEntered
Doe,Jane    AAA 
Smith,John  AAA 11-5-2012

编辑重新评论

SELECT doc.Name, doc.Site, doc.Document, Max(doc.Expr1003) AS MaxOfExpr1003
FROM doc
GROUP BY doc.Name, doc.Site, doc.Document;

编辑评论#2

SELECT 
    ResultsTbl.Name, 
    ResultsTbl.Site, 
    ResultsTbl.Document, 
    Max(ResultsTbl.Expiration_Date) AS Expiration_Date 
FROM (
    SELECT 
        lname & ', ' & fname AS Name, 
        site_name AS Site, 
        Document, cv_request_expires_on AS Expiration_Date 
    FROM Coord_CV_Expiration 
    UNION SELECT 
        lname & ', ' & fname AS Name, 
        site_name AS Site, 
        Document, 
        cv_request_expires_on AS Expiration_Date 
    FROM LeadCoord_CV_Expiration ...) AS ResultsTbl 
GROUP BY ResultsTbl.Site, ResultsTbl.Document, ResultsTbl.Name
ORDER BY ResultsTbl.Expiration_Date;

请注意,您不应该按到期日分组。