将消除歧义的数据与现有的重复记录相匹配

时间:2015-12-10 15:40:06

标签: sql postgresql

我有一个名为Transactions的表,它具有来自店面的分类帐。为简单起见,让我们说它看起来像这样:

trans_id | cust | date | num_items | cost
---------+------+------+-----------+------
   1     |  Joe | 4/18 |     6     | 14.83
   2     |  Sue | 4/19 |     3     |  8.30
   3     |  Ann | 4/19 |     1     |  2.28
   4     |  Joe | 4/19 |     4     | 17.32
   5     |  Sue | 4/19 |     3     |  8.30
   6     |  Lee | 4/19 |     2     |  9.55
   7     |  Ann | 4/20 |     1     |  2.28

对于信用卡购买,我随后获得了一张具有完整时间戳的电子分类帐。所以我有一个名为cctrans的表,包含日期,时间,客户,成本和其他一些信息。我想在cctrans表中添加一个列trans_id,它引用事务表。

这方面的更新声明很简单,除了一个故障:我在4/19从Sue获得了一个11 AM的交易,价格为8.30美元,而Sue的4 PM交易是4/19的8.00美元的交易,相同的是事务表除了trans_id字段。我并不十分关心cctrans表的哪条记录与trans_id 2相关联,哪一条链接到trans_id 5,但它们都不能被分配相同的trans_id。

这里的问题是:我如何实现这一目标(理想情况是,当客户每天进行三到四次相同的购买时,这种方式也有效)?

我到目前为止所做的最好的事情是:

UPDATE cctrans AS cc
SET trans_id = t.trans_id
WHERE cc.cust = t.cust AND cc.date = t.date AND cc.cost = t.cost

然后通过手动检查逐个修复它们。但显然这不是我首选的解决方案。

感谢您提供的任何帮助。

0 个答案:

没有答案