Пример

Пример


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

Report Page