计算Access中不同NULL值的数量

时间:2012-12-26 20:06:22

标签: ms-access count distinct

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

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的数量)。如果我在上面的数据库中运行我需要的查询,我希望它返回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。

我已经完成了一些Google,但还没有提出一个查询来完成我需要它做的事情(这就是我如何提出上面没有工作的子查询)。你能提供的任何帮助都是超级的。

感谢。

1 个答案:

答案 0 :(得分:2)

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

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