diff --git a/mappings_old/info_recruits/spouse.ktr b/mappings_old/info_recruits/spouse.ktr index 3c31089..ae2b9a4 100644 --- a/mappings_old/info_recruits/spouse.ktr +++ b/mappings_old/info_recruits/spouse.ktr @@ -627,37 +627,50 @@ ervu_person_registry - with suprug as -(select jsonb_array_elements(ri.info->'svedSemPolozh'->'suprugi') supr, - ri.info->'svedSemPolozh'->'svedAZBrak'->>'nomerZapis' marriage_az_number, - ri.info->'svedSemPolozh'->'svedAZBrak'->>'dataBrakKalend' marriage_date, - ri.info->'svedSemPolozh'->'svedAZRazvod'->>'nomerZapis' divorce_az_number, - ri.info->'svedSemPolozh'->'svedAZRazvod'->>'dataRastBrakKalend' divorce_date, - case when (ri.info->'svedSemPolozh'->>'svedSuprIskl' = '1') then true - else false - end information_excluded, - ri.recruit_id -from public.recruits_info ri) -select - r.id recruit_id, - supr->>'rodstvSvyazSuprugNaim' kinship_type, - concat_ws(' ', supr->'svedFLBS'->'fio'->>'familiya', - supr->'svedFLBS'->'fio'->>'imya', - supr->'svedFLBS'->'fio'->>'otchestvo') full_name, - make_date(NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'god', '')::int, - NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'mesyacz','')::int, - NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'den','')::int) birth_date, - make_date(NULLIF(supr->'svedSmert'->>'god', '')::int, - NULLIF(supr->'svedSmert'->>'mesyacz','')::int, - NULLIF(supr->'svedSmert'->>'den','')::int) death_date, - supr->'svedSmert'->>'nomerZapis' death_az_number, - marriage_az_number, - marriage_date, - divorce_az_number, - divorce_date, - information_excluded -from public.recruits r -join suprug on r.id = suprug.recruit_id + WITH suprug AS ( + SELECT + supr.supri AS supr, + ri.info->'svedSemPolozh'->'svedAZBrak'->>'nomerZapis' AS marriage_az_number, + ri.info->'svedSemPolozh'->'svedAZBrak'->>'dataBrakKalend' AS marriage_date, + ri.info->'svedSemPolozh'->'svedAZRazvod'->>'nomerZapis' AS divorce_az_number, + ri.info->'svedSemPolozh'->'svedAZRazvod'->>'dataRastBrakKalend' AS divorce_date, + CASE + WHEN (ri.info->'svedSemPolozh'->>'svedSuprIskl' = '1') THEN true + ELSE false + END AS information_excluded, + ri.recruit_id + FROM public.recruits_info ri + LEFT JOIN LATERAL ( + SELECT jsonb_array_elements(ri.info->'svedSemPolozh'->'suprugi') AS supri + WHERE jsonb_typeof(ri.info->'svedSemPolozh'->'suprugi') = 'array' + ) AS supr ON true +) +SELECT + r.id AS recruit_id, + supr->>'rodstvSvyazSuprugNaim' AS kinship_type, + CONCAT_WS(' ', + supr->'svedFLBS'->'fio'->>'familiya', + supr->'svedFLBS'->'fio'->>'imya', + supr->'svedFLBS'->'fio'->>'otchestvo' + ) AS full_name, + MAKE_DATE( + NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'god', '')::int, + NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'mesyacz','')::int, + NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'den','')::int + ) AS birth_date, + MAKE_DATE( + NULLIF(supr->'svedSmert'->>'god', '')::int, + NULLIF(supr->'svedSmert'->>'mesyacz','')::int, + NULLIF(supr->'svedSmert'->>'den','')::int + ) AS death_date, + supr->'svedSmert'->>'nomerZapis' AS death_az_number, + marriage_az_number, + marriage_date, + divorce_az_number, + divorce_date, + information_excluded +FROM public.recruits r +JOIN suprug ON r.id = suprug.recruit_id; 0 N