我有一个包含超过100,000条记录的访问表。我的问题是许多记录都有重复的信息。我想将记录合并/合并到记录中。
我有一个字段(CommonField),可用于识别重复项(有时超过两个记录)。每个领域都需要单独考虑。例如:
如果日期字段不相等,我宁愿保留最近的日期。
如果计数字段不相等,我宁愿保留较大的值。
如果公司名称不相同,我宁愿保留两个名称,除非一个名字在另一个名称之内。
CLICK HERE获取数据样本:
+------------------+-------------+-------+-------+------------------+-----------+------------+--------+-----------------------------+
| Existing Records | | | | | | | | |
+------------------+-------------+-------+-------+------------------+-----------+------------+--------+-----------------------------+
| ID | CommonField | First | Last | Email | Date | Currency | Count | Company |
| 1 | AA123 | John | | | | $465,000 | | ABC Company Ltd |
| 2 | AA123 | John | | John@gmail.com | 1-Mar-78 | $465,000 | 87,000 | ABC Company |
| 3 | AA123 | | Doe | | 14-Mar-78 | $465,000 | 88,000 | |
| 4 | BB456 | Dave | Smith | | 1-Apr-92 | $1,200,000 | 5,000 | Carter Company |
| 5 | BB456 | | Smith | Dave@aol.com | 1-Apr-92 | $1,200,000 | 5,000 | Simpson Ltd |
| 6 | CC568 | | | Jane@hotmail.com | 1-Sep-05 | $60,000 | | Woods Holdings |
| 7 | CC568 | | Woods | Jane@hotmail.com | | | 40,000 | Woods |
| 8 | CC568 | Jane | Woods | | 1-Sep-05 | | | |
| 9 | DD211 | Bob | Burns | Bob@gmail.com | 5-Aug-01 | $678,100 | 21,400 | |
| | | | | | | | | |
| Desired Result | | | | | | | | |
| ID | CommonField | First | Last | Email | Date | Currency | Count | Company |
| 10 | AA123 | John | Doe | John@gmail.com | 14-Mar-78 | $465,000 | 88,000 | ABC Company Ltd |
| 11 | BB456 | Dave | Smith | Dave@aol.com | 1-Apr-92 | $1,200,000 | 5,000 | Carter Company, Simpson Ltd |
| 12 | CC568 | Jane | Woods | Jane@hotmail.com | 1-Sep-05 | $60,000 | 40,000 | Woods Holdings |
| 13 | DD211 | Bob | Burns | Bob@gmail.com | 5-Aug-01 | $678,100 | 21,400 | |
+------------------+-------------+-------+-------+------------------+-----------+------------+--------+-----------------------------+
我有兴趣听取您关于解决此项目的最佳方式的建议。
答案 0 :(得分:0)
难看。
我认为对于名称字段,您可能需要另一个表来组合名称。我首先通过查询公共ID和公司名称从组中创建新表。向表中添加标准化名称的额外字段,然后使用查找重复项查询查看具有多个名称的所有常用ID,并手动分配标准化名称。
然后,您可以通过查询将原始数据表和公司名称表都放入一个组中,并将标准化名称拉入最终结果。对于数据和计数字段,您可以使用max(date)和max(count)。这应该适用于第一个,最后一个和电子邮件文本字段 - 但您需要非常仔细地手动检查结果。