Ниже я кое-что пытаюсь достичь.
Данные из 3 разных файлов загружаются в единую таблицу, в которой мне нужно классифицировать данные на основе имен и проверять их наилучшее соответствие.данные по всем строкам.
Одно и то же имя может иметь максимум 3 вхождения в таблице и минимум 1.
Сравнение данных должно происходить по всем 3 строкам или 2 строкам (еслиимя не было получено из одного источника), если для данного имени существует более одного вхождения.Если для данного имени есть только 1 строка, которую следует принять в качестве значения по умолчанию.
Это моя попытка.
select
case
when (coalesce(length(A.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0) AND coalesce(length(A.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then A.x_manufacturer
when (coalesce(length(B.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(B.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then B.x_manufacturer
when (coalesce(length(C.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(C.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0)) then C.x_manufacturer
else C.x_manufacturer end as Best_Fit_x_manufacturer
from tbl1 A left outer join tbl1 B on
A.name = B.name
left outer join tbl1 C on C.name = B.name
where A.sourceid=1 and B.sourceid=2 and C.sourceid=3 group by
C.name
Пример данных в таблице:
Name ManuFacturer source
A AB 1
A ABC 2
A ABCD 3
B BC 1
Ожидаемый результат
Name ManuFacturer source
A ABCD 3
B BC 1