SET client_encoding = 'UTF8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off; SET search_path = public, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; -- ***************************************************************************** BEGIN; -- ***************************************************************************** -- A partir des personnes déjà trouvées INSERT INTO informationspe ( nir, nom, prenom, dtnai ) SELECT CASE WHEN ( nir_correct( personnes.nir ) ) THEN personnes.nir ELSE NULL END AS nir, personnes.nom, personnes.prenom, personnes.dtnai FROM infospoleemploi INNER JOIN personnes ON ( infospoleemploi.personne_id = personnes.id ) WHERE ( SELECT COUNT(*) FROM informationspe WHERE ( ( informationspe.nir IS NOT NULL AND personnes.nir IS NOT NULL AND informationspe.nir = personnes.nir AND nir_correct( personnes.nir ) ) OR ( informationspe.nom = personnes.nom AND informationspe.prenom = personnes.prenom AND informationspe.dtnai = personnes.dtnai ) ) ) = 0 GROUP BY personnes.nir, personnes.nom, personnes.prenom, personnes.dtnai ORDER BY personnes.nir, personnes.nom, personnes.prenom, personnes.dtnai; -- A partir des personnes pas encore trouvées (tables tempXXX) INSERT INTO informationspe ( nir, nom, prenom, dtnai ) SELECT nir15 AS nir, temp.nom, temp.prenom, temp.dtnai FROM ( SELECT * FROM( SELECT nir15, nom, prenom, dtnai FROM tempcessations UNION SELECT nir15, nom, prenom, dtnai FROM tempradiations UNION SELECT nir15, nom, prenom, dtnai FROM tempinscriptions ) AS tmptables ) AS temp WHERE ( SELECT COUNT(*) FROM informationspe WHERE ( ( informationspe.nir IS NOT NULL AND temp.nir15 IS NOT NULL AND informationspe.nir = temp.nir15 ) OR ( informationspe.nom = temp.nom AND informationspe.prenom = temp.prenom AND informationspe.dtnai = temp.dtnai ) ) ) = 0 GROUP BY temp.nir15, temp.nom, temp.prenom, temp.dtnai; INSERT INTO historiqueetatspe ( informationpe_id, identifiantpe, date, etat, code, motif ) SELECT informationspe.id, infospoleemploi.identifiantpe, CASE WHEN infospoleemploi.datecessation IS NOT NULL THEN infospoleemploi.datecessation WHEN infospoleemploi.dateradiation IS NOT NULL THEN infospoleemploi.dateradiation WHEN infospoleemploi.dateinscription IS NOT NULL THEN infospoleemploi.dateinscription END AS date, CASE WHEN infospoleemploi.datecessation IS NOT NULL THEN CAST( 'cessation' AS TYPE_ETATPE ) WHEN infospoleemploi.dateradiation IS NOT NULL THEN CAST( 'radiation' AS TYPE_ETATPE ) WHEN infospoleemploi.dateinscription IS NOT NULL THEN CAST( 'inscription' AS TYPE_ETATPE ) END AS etat, CASE WHEN infospoleemploi.datecessation IS NOT NULL THEN NULL WHEN infospoleemploi.dateradiation IS NOT NULL THEN NULL WHEN infospoleemploi.dateinscription IS NOT NULL THEN infospoleemploi.categoriepe END AS code, CASE WHEN infospoleemploi.datecessation IS NOT NULL THEN infospoleemploi.motifcessation WHEN infospoleemploi.dateradiation IS NOT NULL THEN infospoleemploi.motifradiation WHEN infospoleemploi.dateinscription IS NOT NULL THEN NULL END AS motif FROM infospoleemploi INNER JOIN personnes ON ( personnes.id = infospoleemploi.personne_id ) INNER JOIN informationspe ON ( ( informationspe.nir IS NOT NULL AND personnes.nir IS NOT NULL AND informationspe.nir = personnes.nir ) OR ( informationspe.nom = personnes.nom AND informationspe.prenom = personnes.prenom AND informationspe.dtnai = personnes.dtnai ) ) GROUP BY informationspe.id, infospoleemploi.identifiantpe, date, etat, code, motif; -- A partir des personnes pas encore trouvées (tables tempXXX) INSERT INTO historiqueetatspe ( informationpe_id, identifiantpe, date, etat, code, motif ) SELECT informationspe.id, identifiantpe, date, etat, code, motif FROM( SELECT nir15, identifiantpe, nom, prenom, dtnai, CAST( 'cessation' AS TYPE_ETATPE ) AS etat, datecessation AS date, NULL AS code, motifcessation as motif FROM tempcessations UNION SELECT nir15, identifiantpe, nom, prenom, dtnai, CAST( 'radiation' AS TYPE_ETATPE ) AS etat, dateradiation AS date, NULL AS code, motifradiation as motif FROM tempradiations UNION SELECT nir15, identifiantpe, nom, prenom, dtnai, CAST( 'inscription' AS TYPE_ETATPE ) AS etat, dateinscription AS date, categoriepe AS code, NULL as motif FROM tempinscriptions ) AS temp INNER JOIN informationspe ON ( ( informationspe.nir IS NOT NULL AND temp.nir15 IS NOT NULL AND informationspe.nir = temp.nir15 ) OR ( informationspe.nom = temp.nom AND informationspe.prenom = temp.prenom AND informationspe.dtnai = temp.dtnai ) ) GROUP BY informationspe.id, identifiantpe, date, etat, code, motif; -- ***************************************************************************** COMMIT; -- *****************************************************************************