Пример
with c_fias (aoguid, offname_all, guid_all) AS
(
SELECT o.aoguid, o.offname || ' ' || o.shortname, o.aoguid
FROM fias.address_object o
WHERE 1=1
and o.aolevel = 3
and o.actstatus = 1
and o.aoguid = ''
UNION ALL
SELECT o1.aoguid,
z.offname_all || '~~' || o1.offname || ' ' || o1.shortname,
z.guid_all|| '~~' || o1.aoguid
FROM fias.address_object o1
JOIN c_fias z ON o1.parentguid = z.aoguid
WHERE 1=1
and o1.actstatus = 1
),
c_obrab AS
(
SELECT f.id,
f.district || ' ' || 'р-н'
|| CASE
WHEN f.city_type is not null
THEN '~~' || f.city || ' ' || f.city_type
ELSE null
END
|| CASE
WHEN f.locality_type is not null
THEN '~~' || f.locality || ' ' || f.locality_type
ELSE null
END
|| CASE
WHEN f.street_type is not null
THEN '~~' || f.street || ' ' || f.street_type
ELSE null
END adr_all,
f.house, f.structure, f.flat
FROM seluser.tmp_adrs_to_fias f
WHERE 1=1
),
c_spis01 as -- не найдено в фиас даже до улицы
(
SELECT y.id, 'Spisok01', z.aoguid "ФИАС_АДР", null "ФИАС_ДОМ", null "ФИАС_КВ"
FROM c_obrab y
LEFT JOIN c_fias z ON z.offname_all = y.adr_all -- совпадение до улицы
WHERE 1=1
and z.offname_all is null
)
SELECT q.*
FROM c_spis01 q
JOIN seluser.tmp_adrs_to_fias z ON z.id = q.id