【问题标题】:Query: Find the earliest date with a null entry which still works with no null entries查询:查找具有空条目的最早日期,该日期仍然适用于没有空条目
【发布时间】:2019-01-30 07:46:34
【问题描述】:

我正在构建一个查询,为用户显示下一个截止日期。日期数保持不变,但截止日期会发生变化,具体取决于有多少条记录有来自用户的评论。

SELECT tbl_Description.Sample, 
       tbl_Description.User, 
       Min(tbl_Data.TestDate) As DueDate
  FROM tbl_Description 
 INNER 
  JOIN tbl_Data 
    ON tbl_Description.DescriptionID = tbl_Data.DateID
 WHERE tbl_Data.Comment IS NULL
 GROUP 
    BY tbl_Description.Sample, 
       tbl_Description.User;

但是,当来自tbl_Data 的每条记录都有注释时,查询会返回空记录。这可能会发生,因为如果每个记录都存在,WHEREIS NULL 语句不会返回任何内容。最好,我仍然希望空记录在 [DueDate] 字段中显示一些内容,例如空白或“完成”注释。

tbl_Description

Sample          User
1               Betty

tbl_Data (v1)

Date          Comments
05/01/2018    Orange
05/08/2018    Orange-Brown
05/15/2018
05/22/2018

查询输出

Sample          User          DueDate
1               Betty         05/15/2018

tbl_Data (v2)

Date          Comments
05/01/2018    Orange
05/08/2018    Orange-Brown
05/15/2018    Brown
05/22/2018    Brown-Black

查询输出(此时查询不返回任何内容)

Sample          User          DueDate
1               Betty         Complete

任何帮助将不胜感激!

【问题讨论】:

  • 能否请您发布一些示例数据并期望最终结果?
  • 对不起!为原始帖子添加了一些上下文 - 希望对您有所帮助。
  • 使用左连接来连接你的表。使用 NVL 将空的最小 TestDate 转换为您想要显示的任何内容。
  • 不幸的是,WHERE 子句返回一个空集,所以NVLNZSELECT 语句没有影响
  • 每个 DescriptionID 应该有一个记录...我只是懒得将它包含在表示例中,但是示例 # 应该具有相同的目的

标签: sql ms-access vba ms-access-2010


【解决方案1】:

现在知道我们也可以按DescriptionID 分组,我建议单独查询tbl_Data 中没有Comment 的记录的最小值TestDate,然后(外部)将结果连接到表tbl_Description。这样,每个 Description 都包含在结果中,并且当 Description 的所有 Dates 都有一个 CommentDueDate 将显示为空白:

SELECT tbl_Description.Sample, tbl_Description.User, Uncommented.DueDate
FROM tbl_Description 
    LEFT JOIN (
        SELECT tbl_Data.DateID, Min(tbl_Data.TestDate) AS DueDate
        FROM tbl_Data
        WHERE (((tbl_Data.Comment) Is Null))
        GROUP BY tbl_Data.DateID
    ) AS Uncommented ON tbl_Description.DescriptionID = Uncommented.DateID;

【讨论】:

  • 谢谢您 - 效果很好!这是我第一次遇到这种SQL结构(我不太了解)。您是否实质上在 LEFT JOIN 中创建了一个子查询,并通过外键将其链接回 tbl_Description?
  • @Plaxerous 是的,这基本上就是我所做的。子查询也可以保存为单独的查询。它计算每个DateID 的最小值TestDate,其中只考虑没有Comment 的记录。在主查询中,Descriptions 表可以连接到该查询,以便返回来自tbl_Description 的所有记录。这样做,这两个查询都可以在没有 SQL 视图 的情况下创建,只需使用图形设计窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多