1
我有两个表: 1)其中一个用于发票,有成千上万的数据。在我的INVOICES表中,有发票和它们的价格给顾客。 2)另一个是债务。在我的DEBTS表中,每个客户都有发票的全部债务。
我的目标是找到最近的款项和债务的发票。举例来说,我有表:如何在oracle中找到最接近的子集总和
债项表:
CUSTOMER_ID TOTAL_DEBTS
3326660 444$
2789514 165$
4931541 121$
发票表:
CUSTOMER_ID INVOICE_ID AMOUNT_OF_INVOICE
3326660 1a 157$
3326660 1b 112$
3326660 1c 10$
3326660 1d 94$
3326660 1e 47$
3326660 1f 35$
3326660 1g 14$
3326660 1h 132$
3326660 1i 8$
3326660 1j 60$
3326660 1k 42$
2789514 2a 86$
2789514 2b 81$
2789514 2c 99$
2789514 2d 61$
2789514 2e 16$
2789514 2f 83$
4931541 3a 11$
4931541 3b 14$
4931541 3c 17$
4931541 3d 121$
4931541 3e 35$
4931541 3f 29$
我的目标表:
CUSTOMER_ID TOTAL_DEBTS CALCULATED_AMOUNT INVOICES_ID
3326660 444$ 444$ 1a,1b,1f,1h,1i
2789514 165$ 164$ 2b,2f
4931541 121$ 121$ 3d
,因为我的桌子上有数以千计的数据,对我来说性能非常重要。我发现从代码覆盖: closest subset sum
但是,性能低。当我在calculeted_amount和total_debts之间找到相同的值时,我必须停止加法循环。
谢谢你的帮助。
这不适合SQL的问题。您需要概括所有可能的组合并查看哪一个最接近。 –
同意@GordonLinoff,阅读它,它可以帮助你理解你对[wiki]的问题(https://en.wikipedia.org/wiki/Subset_sum_problem) – Seyran