ms-access – 计算Access中不同NULL值的数量

我有一张桌子,我需要跟踪退回修理的物品,因此跟踪处理,问题以及我们何时收到并运送物品:

Table Name: RMAItems
 id  | RMANbr | PartNbr  |  RecvDate   |
-----------------------------------------
 1   | 12345  | 456-003  |  12-21-2012 |
 2   | 12345  | 434-007  |  12-21-2012 |
 3   | 12346  | 422-010  |             |
 4   | 12347  | 421-540  |  12-21-2012 |
 5   | 12347  | 460-000  |             |
 6   | 12348  | 459-006  |  12-26-2012 |
 7   | 12349  | 439-007  |             |
 8   | 12349  | 435-006  |             |   

“Recv Date”列是三个中唯一可以为NULL的列(即无值). id是主键(没有重复),RMA Nbr列可以有重复项(因为每个RMA Nbr可以分配给客户多个项目). Recv Date列可以为NULL,直到我们将其标记为已接收,并且表单通过另一个查询自动填充日期.

我需要Access 2003中的查询(我的公司很差,现在无法升级)来计算RMA Nbr列中Recv Date字段为NULL的不同记录的数量(即我需要知道RMA的数量)没有收到所有物品的Nbr’s).如果我在上面的数据库中运行我需要的查询,我希望它返回3,因为有三个RMA Nbr,它们上面有没有收到的项目.

我尝试了以下查询但没有成功:

SELECT Count(RMANbr)
FROM RMAItems
WHERE RecvDate Is Null;

(返回4)

SELECT Count(*)
FROM RMAItems
WHERE RecvDate Is Null;

(返回4)

SELECT Count(*)
FROM (SELECT DISTINCT RMANbr FROM RMAItems)
WHERE RecvDate Is Null;

(运行此查询时会弹出一个带有文本框的对话框,并在文本框上方显示“RecvDate”)

如上所述,我在Windows XP Pro SP3计算机上使用MS Access 2003.

我已经做了一些谷歌,但没有提出一个查询,它将做我需要它做的事情(这就是我如何提出上面的子查询不起作用).你能提供的任何帮助都是超级的.

谢谢.

最佳答案 使用类似于第三个示例的方法,但将WHERE子句移动到子查询中.您获得RecvDate的参数对话框的原因是因为该字段未包含在子查询SELECT列表中,因此父查询未知/不可用.

SELECT Count(*)
FROM
    (
        SELECT DISTINCT RMANbr
        FROM RMAItems
        WHERE RecvDate Is Null
    ) AS sub;
点赞