我正在尝试将两个具有货币近似值且没有pk的财务表匹配。
TABLE A
NAME VALUE
Jerry 1024
Beth 2048
Jerry 1023
Beth 100
TABLE B
NAME VALUE
Jerry 1024
Jerry 1020
Beth 2045
Beth 50
我正在寻找的结果是这样的:
NAME TA TB
Jerry 1024 1024
Jerry 1023 1020
Beth 2048 2045
Beth null 50
Beth 100 null
我曾经尝试使用row_number()
创建一个“伪ID”,但是找不到一种方法来告诉oracle通过近似表上的VALUE
字段来进行分区。
你们将如何处理?
答案 0 :(得分:0)
为什么“表A”中杰里的“ 1023”与“表B”中的“ 1020”匹配而不是“表B”中的“ 1024”?
如果原因是“表B”中的“ 1024”已经与“表A”中的“ 1024”匹配,那么您已经引入了某种形式的迭代过程。每次迭代都需要在“表B”中为“表A”中的每一行找到最佳匹配,在“表A”中为“表B”中的每一行找到最佳匹配,然后,当您有一个匹配项时,最适合A和B的人,将它们一起分配并从流程中删除。
继续直到迭代不再匹配为止。