我有一张桌子,我需要跟踪退回维修的物品,因此请跟踪处理,问题以及我们何时收到并运送物品。
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,但还没有提出一个查询来完成我需要它做的事情(这就是我如何提出上面没有工作的子查询)。你能提供的任何帮助都是超级的。
感谢。
答案 0 :(得分:2)
使用类似于第三个示例的方法,但将WHERE
子句移动到子查询中。您获得RecvDate
参数对话框的原因是因为该字段未包含在子查询SELECT
列表中,因此父查询未知/不可用。
SELECT Count(*)
FROM
(
SELECT DISTINCT RMANbr
FROM RMAItems
WHERE RecvDate Is Null
) AS sub;