可变数量的字段匹配时选择正确的记录

时间:2018-07-10 14:19:45

标签: join select

具有以下源表Tariff

objectId    tariffValue productObjectId debtorObjectId     careOrderProductObjectId
1001        100.00      1612            140             38000
1888        250.00      1612            NULL            NULL
1941        300.00      1612            NULL            42896
2640        175.00      1612            143             NULL

我想离开该表以获取以下网站的rifftyValue:

productObjectId
debtorObjectId
careOrderProductObjectId

我尝试过:

SELECT 
    l.*
    t.tariffValue AS Value 
FROM Logtable AS l
LEFT JOIN Tariff AS t on t.productObjectId = l.productObjectid 
                     AND t.debtorObjectid = l.debtorObjectid 
                     AND t.careOrderProductObjectId = l.careOrderProductObjectId

如果它们都匹配,那么很容易。

productObjectId = 1612
debtorObjectId  = 140
careOrderProductObjectId = 38000

然后该值必须为100.00

但是当3个或2个或1个匹配时,如何在一次连接中获得正确的值?

例如:

productObjectId = 1612
debtorObjectId  = 100
careOrderProductObjectId = 42896

然后值必须是300.00。

或者:

productObjectId = 1612
debtorObjectId  = 143
careOrderProductObjectId = 42896

然后该值必须为175.00。

或者:

productObjectId = 1612
debtorObjectId  = 180
careOrderProductObjectId = 15896

然后该值必须为250.00。

0 个答案:

没有答案