MS Access:查询以添加“如果”条件

Posted

技术标签:

【中文标题】MS Access:查询以添加“如果”条件【英文标题】:MS Access : Query to add "If" condition 【发布时间】:2016-01-22 10:49:53 【问题描述】:

我有以下 MS Access 查询:

SELECT a.*
FROM Version_Change AS a
RIGHT JOIN
  (SELECT VERSION,
          min(ChangeDate) AS minimumdate,
          ObjectID
   FROM Version_Change
   GROUP BY ObjectID,
            VERSION) AS b ON(a.VERSION = b.VERSION)
AND (a.ChangeDate = b.minimumdate)
AND (a.ObjectID = b.ObjectID);

问题是“ChangeDate”列有时可能为空。所以我希望我的查询也显示“ChangeDate”为空的字段。如何将这个条件整合到我的查询中?

【问题讨论】:

【参考方案1】:

如果更改日期,对于一个版本和 objectid,都是 NULL,那么 min(ChangeDate) 也将为 null,并且连接不会成功,因为 a.ChangeDate = NULL 将被评估为 NULL,这是不正确的。

您可以像这样更改 ON 条件:

ON (a.version = b.version)
   AND
   (
     (a.ChangeDate = b.minimumdate)
     OR
     (a.ChangeDate IS NULL AND b.minimumdate IS NULL)
   )
   AND (a.ObjectID = b.ObjectID);

【讨论】:

【参考方案2】:

Nz 可以使用旧技巧:

AND (Nz(a.ChangeDate,b.minimumdate) = b.minimumdate)

【讨论】:

以上是关于MS Access:查询以添加“如果”条件的主要内容,如果未能解决你的问题,请参考以下文章

MS-Access 中的多个日期范围

SQL MS Access查询的排除条件

MS Access:具有多个条件的双循环查询以显示在表单上

查询不使用 MS-Access 中的日期条件进行拉取

在 MS Access 中以分号分隔的列表检索电子邮件地址的子查询

MS Access 查询条件示例