Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 2003 在Access表中查找重复项的查询_Ms Access 2003 - Fatal编程技术网

Ms access 2003 在Access表中查找重复项的查询

Ms access 2003 在Access表中查找重复项的查询,ms-access-2003,Ms Access 2003,我已经用尽了我能找到的所有例子,但我仍然没有得到我需要的结果 我有一个发票表,需要在其中查找在多个客户上使用相同发票号的任何实例。一个发票编号可以在表中出现多次,并且每个记录通过发票和发票序号进行区分,但是每个发票应该只有一个客户,但是有些错误已经潜入 我需要的是一份只有两个或两个以上客户的发票的报告。在下面的数据中,Cust 45001301不应是发票708的客户编号,序号3 Cust No Invoice No Seq No Input Date 700180 708 1 9/30

我已经用尽了我能找到的所有例子,但我仍然没有得到我需要的结果

我有一个发票表,需要在其中查找在多个客户上使用相同发票号的任何实例。一个发票编号可以在表中出现多次,并且每个记录通过发票和发票序号进行区分,但是每个发票应该只有一个客户,但是有些错误已经潜入

我需要的是一份只有两个或两个以上客户的发票的报告。在下面的数据中,Cust 45001301不应是发票708的客户编号,序号3

Cust No Invoice No  Seq No  Input Date
700180  708 1   9/30/2007
700180  708 2   9/30/2007 
45001301    708 3   9/30/2007
700180  708 4   9/30/2007
700190  709 1   9/30/2007
700190  709 2   9/30/2007
我试着做的就是通过查询得到一个简单的分组,只显示那些有多个客户的发票,就像这样-

[Invoice No] [Cust no]
   708          700180 
   708        45001301
但是我只想看到有两个或更多客户的条目,因此在上面的示例中,我不会看到发票709的条目,因为它只有一个客户

[Invoice No] [Cust no]
   708          700180 
   708        45001301
   709          700190

首先创建一个查询,返回[Invoice No]和[Cust No]的所有不同组合。然后将其用作子查询,在子查询中计算每个[Invoice No]的客户数,并添加HAVING子句,以将输出限制为计数大于1的客户数

选择子项[发票编号],将*计为客户 从…起 选择不同的[发票编号],[客户编号] 从发票 作为子 按子项分组[发票编号] 计数*>1; 如果然后需要查看哪些客户在哪些位置复制了这些发票,请将该查询连接回invoices表

选择不同的i.[发票号],子2.客户,i.[客户号] 从…起 发票如我所愿 内连接 选择子项[发票编号],将*计为客户 从…起 选择不同的[发票编号],[客户编号] 从发票 作为子 按子项分组[发票编号] 计数*>1的 作为sub2 i.【发票号】=子2.【发票号】; 使用Access 2007和名为Invoices的表中的示例数据,该查询将为我提供以下结果集:

发票编号客户编号 708 2 700180 708 2 45001301 如果您确实想查看这些重复发票号的所有数据,请将第二个查询的第一行更改为:

选择i.[发票编号],子2.客户,i.[客户编号],i.[序号],i.[输入日期] 那么:

SELECT inv.[cust no],
       inv.[invoice no],
       inv.[seq no],
       inv.[input date]
FROM   inv
       INNER JOIN (SELECT q.[invoice no],
                          Count(q.[invoice no]) AS [CountOfInvoice No]
                   FROM   (SELECT inv.[invoice no],
                                  inv.[cust no]
                           FROM   inv
                           GROUP  BY inv.[invoice no],
                                     inv.[cust no]) AS q
                   GROUP  BY q.[invoice no]
                   HAVING (( ( Count(q.[invoice no]) ) > 1 ))) AS q2
ON inv.[invoice no] = q2.[invoice no]
其中inv是表的名称

查询返回具有多个关联客户编号的发票编号的所有详细信息和行

cust no invoice no  seq no  input date
700180      708     4       30/09/2007
45001301    708     3       30/09/2007
700180      708     2       30/09/2007
700180      708     1       30/09/2007

您不应该添加用于澄清的查询吗?如果您的想法是纠正问题,那么获取所有可用数据通常是有用的。这个问题可能比实际要求更简单。这正是我所需要的!现在也许我在这里拔出的所有头发都会重新长出来。谢谢