【问题标题】:How do I prevent removing duplicate records from my Access query results?如何防止从我的 Access 查询结果中删除重复记录?
【发布时间】:2016-03-16 03:35:10
【问题描述】:

数据

我在 MS Access 2013 中工作。我有两个表(“Import”和“Import-Pay”)。我有一个结合了两者数据的查询。

Import-Pay 包含来自客户的交易数据,其中包括偶尔重复的交易记录(例如:客户买东西 +$50,客户退货 -$50,客户改变主意并再次购买 +$50)。它很少见,但它会发生。我的问题是,在创建我的客户账单报告(查询)时,由于客户只在交易中记录销售日期,我最终在 Import-Pay 表中得到了两条 +$50 的记录。

查询

我正在查询交易数据,并通过以下查询将其与客户的辅助表信息结合起来:

SELECT DISTINCTROW Import.[ACCOUNT#] AS [ACCOUNT#], [Import-Pay].[Account Number], [Import-Pay].[Name], [Import-Pay].[P TRANS DT], [Import-Pay].[P Trans Amt], [Import-Pay].[Total Account Balance]
FROM Import RIGHT JOIN [Import-Pay] ON Import.[CD#] = [Import-Pay].[Account Number]
GROUP BY Import.[ACCOUNT#], [Import-Pay].[Account Number], [Import-Pay].[Name], [Import-Pay].[P TRANS DT], [Import-Pay].[P Trans Amt], [Import-Pay].[Total Account Balance];

我的问题

这些表是右连接的,所以应该显示我的“Import-Pay”表中的所有记录......但是由于某种原因,Import-Pay 的重复记录在查询运行后丢失了,给我一个不同的总数 [Trans ]。

疑难解答

  1. 我已经仔细检查了我的表连接以确保这不是问题。
  2. 我已尝试删除“分组依据”声明
  3. 我已删除“DISTINCTROW”功能

我已经搞砸了两天了,我没有想法。非常感谢您对这个问题有新的看法!

谢谢!

【问题讨论】:

    标签: group-by duplicates ms-access-2013 ms-query right-join


    【解决方案1】:

    你没有任何聚合函数,所以去掉 GROUP BY 子句。同时删除 DISTINCTROW。

    您的Import-Pay 表应该有一个主键。在 SELECT 列表中包含此列(如果是复合键,则为所有列)。

    如果它没有主键,则创建一个(自动编号列可以正常工作)。

    【讨论】:

    • 这是主键!我所要做的就是添加主键来查询以保持记录的唯一性......第二组眼睛 - 谢谢。我不想要我给客户的报告中的主键,但我可以在我的导出宏中删除它。