交叉申请最接近的匹配

时间:2018-10-28 10:45:24

标签: oracle plsql cross-apply

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

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中插入数据。

如果“品牌”和“颜色”匹配以及“大小”和“价格”最接近,则找到表2中记录的匹配项。 如果未找到匹配项,则尝试仅使用颜色(完全匹配),尺寸和价格最接近的匹配项 如果仍然没有找到匹配项,请尝试颜色完全匹配和价格最接近的匹配。

在上面的示例中,对于表2中的第一条记录“ B”,找到一个匹配项C,因此将其插入到表3和第二条记录F中,记录“ E”是匹配项,但只有颜色和完全匹配项。

根据以前的文章,我可以使用交叉应用并获得完全匹配的条件,但是有人可以帮助我在其中包含最接近的匹配逻辑吗?

0 个答案:

没有答案