首页 > 解决方案 > 与最接近的匹配交叉应用

问题描述

我需要一个一个地匹配几个属性。我希望避免使用多个选择语句。下面是示例。

Table1
Col1|Price|Brand|size|Color
-----------------------
A|10$|BRAND1|10|Red
B|25$|BRAND1|20|Red
C|30$|BRAND1|15|Red
D|40$|BRAND2|25|Blue
E|40$|BRAND2|30|Blue
F|35$|BRAND3|31|Blue


Table2
Col1|Col2|Col3
--------------
B|XYZ|PQR
F|ZZZ|YYY


Table3
Col1|COL2|COL3|LIKECOL1|ClosestPrice|brand|size|Color
------------------------------------------------
B|XYZ|PQR|C|25|BRAND1|15|Red
F|ZZZ|YYY|E|40|NULL|NULL|Blue

在表 3 中,我需要通过检查以下条件从表 2 中插入数据。

如果 Brand 和 Color 匹配并且 size 和 Price 最接近匹配,则在 table2 中查找匹配记录。如果未找到匹配项,则仅尝试颜色(精确匹配)、尺寸和价格最接近匹配 如果仍然没有找到匹配项,请尝试颜色精确匹配和价格最接近匹配。

在上面的示例中,对于 table2 中的第一条记录“B”,发现匹配为 C,因此插入到 table3 和第二条记录 F,记录“E”匹配但只有颜色和完全匹配。

根据以前的一些帖子,我可以使用交叉应用并获取包含精确匹配的条件,但是任何人都可以帮助我在其中包含最接近的匹配逻辑吗?

标签: oracleplsqlcross-apply

解决方案


推荐阅读