SQL-запрос, чтобы получить максимальное совпадение данных для данного ввода - PullRequest
0 голосов
/ 10 мая 2018

На основании заданного ввода необходимо применить условие для получения максимальной оценки совпадения в таблице ниже

MATCH_RULES

enter image description here

Примеры:

if FN=Y&LN=Y&EMAIL=Y&TAX=Y&DOB=Y&MOBILE=Y 
then id=1 and match_score=100

if FN=Y&LN=Y&EMAIL=Y&TAX=N&DOB=N&MOBILE=Y
then id=5 and match_score=40 

Требуется для извлечения записи удовлетворенного результата по высокому соответствию в качестве результата для заданного ввода

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете использовать случай, когда

    select case when 
          (FN='Y' AND LN='Y' AND EMAIL ='Y' AND TAX='Y' 
                AND DOB = 'Y' AND MOBILE ='Y') THEN 1 
            when 
           (FN='Y' AND LN='Y' AND EMAIL ='Y' AND TAX='N' 
                AND DOB = 'N'AND MOBILE ='Y') THEN 5 
           end id , 
    case when 
          (FN='Y' AND LN='Y' AND EMAIL ='Y' AND TAX='Y' AND DOB = 'Y' AND MOBILE ='Y') THEN 100
            when 
           (FN='Y' AND LN='Y' AND EMAIL ='Y' AND TAX='N' AND DOB = 'N'AND MOBILE ='Y') THEN 40
           end match_Score       

    from my_table   
0 голосов
/ 10 мая 2018

В запросах SQL вы можете использовать функцию max(), чтобы получить максимальное значение столбца. В вашем случае вы можете напечатать что-то вроде:

SELECT max(match_score)
FROM ?
WHERE FN = 'Y' and ...
...