访问 SQL 个具有最新日期的唯一记录,包括单个 table 中的空日期

Access SQL unique records with latest date including null dates from single table

我有一个 table 具有以下示例结构:

Identifier| Latitude | Longitude |...many columns...|DateWhenStatusObserved|ID|
----------+----------+---------- +------------------+----------------------+--+
2823DC012 | 28.76285 | 23.70195  |  ...             |            1994/10/28| 1|
2823DC012 | 28.76285 | 23.70195  |  ...             |            1995/04/05| 2|
2822DD030 | 28.76147 | 22.98270  |  ...             |                  NULL| 3|
...

还有更多的列,但不必评估这些列,所有列都应该 return 从查询中编辑。

我希望 SQL 查询 return 只有标识符列的唯一记录,每个唯一标识符都有最新日期。不幸的是,在 DateWhenStatusObserved 列中也有日期为 NULL 的记录,并且在许多情况下,标识符(地理站点)的唯一记录具有 NULL 日期。

已经有很多类似 SQL 问题的答案,例如:

How can I include null values in a MIN or MAX?

SELECT only rows with either the MAX date or NULL

http://bytes.com/topic/access/answers/719627-create-query-evaluate-max-date-recognizing-null-high-value

然而,这些并没有具体说明如何使用带有聚合 Max 函数的 iif 语句来允许 NULL 日期记录通过,同时保持唯一标识符(geosite)记录。

我只得到非 NULL 最大日期记录 return 使用子查询和 Max(IIF()) 的组合。我终于从没有连接的基本子查询中得到了一个合理的结果,并且依赖于 WHERE 子句,但是我从 NULL 日期得到了重复的标识符记录,因为我必须使用 OR 而不是 AND 来获取任何行 returned.

这是我的尝试之一 return 仅记录非 NULL 最大日期记录:

SELECT BasicInfoTable.*
FROM Basic_information_WUA AS BasicInfoTable 
INNER JOIN 
(
SELECT Identifier, MAX (IIF(DateWhenStatusObserved IS NULL, 0, DateWhenStatusObserved)) AS MaxDate 
FROM Basic_information_WUA
GROUP BY Identifier
)  
AS Table2 ON BasicInfoTable.Identifier = Table2.Identifier AND BasicInfoTable.DateWhenStatusObserved = Table2.MaxDate;

那么为什么这不适用于 NULL 日期的情况?

如果能帮助我找到这个问题的近似最优查询,我将不胜感激。

谢谢

您需要提供与 BasicInfoTable.DateWhenStatusObserved = Table2.MaxDate 类似的(为 NULL)逻辑。空值不能是 "compared".