4

我有一张表,我需要跟踪退回进行维修的物品,因此请跟踪处置、问题以及我们何时收到和运送这些物品。:

表名:RMAItems
 编号 | RMANbr | 零件编号 | 接收日期 |
-----------------------------------------
 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 上的项目尚未收到。

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

选择计数(RMANbr)
来自 RMAItems
其中 RecvDate 为空;

(返回 4)

选择计数(*)
来自 RMAItems
其中 RecvDate 为空;

(返回 4)

选择计数(*)
FROM(从 RMAItems 中选择不同的 RMANbr)
其中 RecvDate 为空;

(运行此查询时会弹出一个对话框,其中包含一个文本框和文本框上方的“RecvDate”)

如前所述,我在 Windows XP Pro SP3 机器上使用 MS Access 2003。

我已经做了一些谷歌搜索,但还没有想出一个查询来做我需要做的事情(这就是我想出上面那个不起作用的子查询的方式)。您可以提供的任何帮助都将是超级的。

谢谢。

4

1 回答 1

2

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

SELECT Count(*)
FROM
    (
        SELECT DISTINCT RMANbr
        FROM RMAItems
        WHERE RecvDate Is Null
    ) AS sub;
于 2012-12-26T20:14:58.877 回答