Loading doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql +30 −36 Changes for doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql: 30 added lines, 36 removed lines. Original line number Diff line number Diff line Loading @@ -9,7 +9,8 @@ MATERIALIZED VIEW MV_INTERVENANT AS FROM ( --Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université SELECT icto.individu_id code, CASE WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG' CASE WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG' WHEN icto.code_ose IS NOT NULL THEN icto.code_ose ELSE 'AUTRES' END z_statut_id, icto.id_orig source_code, Loading @@ -35,9 +36,6 @@ MATERIALIZED VIEW MV_INTERVENANT AS OR (inds.t_vacataire = 'O') OR (inds.t_heberge = 'O')) AND inds.c_source IN ('HARP', 'OCTO', 'SIHAM') ) t ), Loading @@ -50,31 +48,41 @@ MATERIALIZED VIEW MV_INTERVENANT AS ), --Trouver la structure d'affectation principale de l'intervenant structure_principale_individu AS ( SELECT DISTINCT uni.c_individu_chaine, SELECT DISTINCT uni.c_individu_chaine, FIRST_VALUE(aff.structure_id) OVER (PARTITION BY uni.c_individu_chaine ORDER BY aff.date_fin DESC) z_structure_id FROM octo.individu_affectation@octoprod aff JOIN octo.individu_unique@octoprod uni ON uni.c_individu_chaine = aff.individu_id WHERE aff.t_principale = 'O' --AND aff.type_id = 4--Uniquement les affectations d'enseignement AND aff.date_fin + 1 >= (SYSDATE - (365 * 2)) ), --Autre façon de trouver les structures d'affectation d'enseignement structure_aff_enseigne AS ( -- On prend en priorite l'affectation principale -- Si plusieurs, alors c'est celle qui commence le + tard qui est prise en comtpe SELECT individu_id, max(structure_id) KEEP (DENSE_RANK LAST ORDER BY t_principale, date_debut) structure_id FROM octo.individu_affectation@octoprod WHERE type_id = 4 AND date_fin + 1 >= (SYSDATE - (365 * 2)) GROUP BY individu_id ), --CNU arrangé cnua AS ( SELECT gra.individu_id individu_id, SELECT gra.individu_id individu_id, nvl(carr.c_cnu, darr.c_cnu) code_cnu_arrange, nvl(carr.lib_long, darr.lib_long) libelle_cnu_arrange, nvl(carr.groupe, darr.groupe) groupe_cnu_arrange FROM octo.individu_grade@octoprod gra LEFT JOIN octo.cnu_spec_cnu_adapte@octoprod ccarr ON (gra.cnu_id=ccarr.cnu_id AND (gra.cnu_specialite_id is null OR gra.cnu_specialite_id=ccarr.cnu_specialite_id)) FROM octo.individu_grade@octoprod gra LEFT JOIN octo.cnu_spec_cnu_adapte@octoprod ccarr ON (gra.cnu_id = ccarr.cnu_id AND (gra.cnu_specialite_id is null OR gra.cnu_specialite_id = ccarr.cnu_specialite_id)) LEFT JOIN octo.cnu_adapte@octoprod carr ON (ccarr.cnu_adapte_id = carr.id) LEFT JOIN octo.discipline_cnu_adapte@octoprod dcarr ON (gra.discipline_sec_id = dcarr.discipline_sec_id) LEFT JOIN octo.cnu_adapte@octoprod darr ON (dcarr.cnu_adapte_id = darr.id) WHERE sysdate BETWEEN gra.d_debut AND nvl(gra.d_fin, sysdate) WHERE sysdate BETWEEN gra.d_debut AND nvl(gra.d_fin, sysdate) AND (gra.cnu_id is not null OR gra.discipline_sec_id is not null) ), /*Individu unique pour avoir qu'un seul individu unique dans l'ordre c_source SIHAM, HARP, APO Car individu unique peut avoir plusieurs entrée (Harpége et Apogé par exemple) dans la table individu_unique, Loading @@ -82,15 +90,13 @@ MATERIALIZED VIEW MV_INTERVENANT AS pui HARPEGE puis APOGEE en dernier lieu*/ induni AS ( SELECT DISTINCT FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine, FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source, FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu FROM ( SELECT DISTINCT u.c_individu_chaine, SELECT DISTINCT FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine, FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source, FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu FROM ( SELECT DISTINCT u.c_individu_chaine, u.c_source, u.c_src_individu, CASE WHEN u.c_source = 'SIHAM' THEN 1 CASE WHEN u.c_source = 'SIHAM' THEN 1 WHEN u.c_source = 'HARP' THEN 2 WHEN u.c_source = 'OCTO' THEN 3 WHEN u.c_source = 'APO' THEN 4 Loading @@ -109,10 +115,6 @@ SELECT DISTINCT ELSE NULL END code_rh, indc.ldap_uid utilisateur_code, str.code z_structure_id, /*CASE WHEN str2.code <> str.code THEN str2.code ELSE NULL END z_structure_id_n2,*/ i.z_statut_id z_statut_id, grade.c_grade z_grade_id, COALESCE(cnua.code_cnu_arrange, '00') z_discipline_id, Loading Loading @@ -184,7 +186,9 @@ FROM i ON i.code = induni.c_individu_chaine --AND induni.c_source IN ('HARP', 'OCTO', 'SIHAM')) LEFT JOIN octo.individu@octoprod ind ON ind.c_individu_chaine = induni.c_individu_chaine --On récupére la structure principale de l'individu LEFT JOIN structure_principale_individu spi ON spi.c_individu_chaine = induni.c_individu_chaine LEFT JOIN structure_aff_enseigne sae ON sae.individu_id = induni.c_individu_chaine --On récupére le code de la structure d'affectation principal de l'individu LEFT JOIN v_structure@octoprod str ON str.id = sae.structure_id --On récupére le grade de l'individu LEFT JOIN octo.individu_grade@octoprod indg ON induni.c_individu_chaine = indg.individu_id AND COALESCE(indg.d_fin, to_date('01/01/9999', 'dd/mm/YYYY')) > SYSDATE Loading @@ -203,16 +207,6 @@ FROM i -- On ne prend que les comptes qui ne sont pas étudiants LEFT JOIN octo.individu_compte@octoprod indc ON indc.individu_id = induni.c_individu_chaine AND not regexp_like(ldap_uid, 'e[0-9]{8}') --On récupére le code de la structure d'affectation principal de l'individu LEFT JOIN v_structure@octoprod str ON str.id = spi.z_structure_id LEFT JOIN v_structure@octoprod str2 ON str.niv2_id = str2.id --On récupére la discipline adaptée directement dans Octopus LEFT JOIN cnua cnua ON cnua.individu_id = induni.c_individu_chaine WHERE i.validite_fin >= (SYSDATE - (365 * 2)) No newline at end of file --AND indc.id IS NOT NULL --Filtre à activer si on ne veut pas remonter les comptes octopus non activés --AND induni.c_individu_chaine = 4251-- Filtre avec code octopus --AND ind.nom_famille = 'DURANDY' --AND induni.c_src_individu = 45053-- Filtre avec code harpege --ORDER BY i.code ASC No newline at end of file Loading
doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql +30 −36 Changes for doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql: 30 added lines, 36 removed lines. Original line number Diff line number Diff line Loading @@ -9,7 +9,8 @@ MATERIALIZED VIEW MV_INTERVENANT AS FROM ( --Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université SELECT icto.individu_id code, CASE WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG' CASE WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG' WHEN icto.code_ose IS NOT NULL THEN icto.code_ose ELSE 'AUTRES' END z_statut_id, icto.id_orig source_code, Loading @@ -35,9 +36,6 @@ MATERIALIZED VIEW MV_INTERVENANT AS OR (inds.t_vacataire = 'O') OR (inds.t_heberge = 'O')) AND inds.c_source IN ('HARP', 'OCTO', 'SIHAM') ) t ), Loading @@ -50,31 +48,41 @@ MATERIALIZED VIEW MV_INTERVENANT AS ), --Trouver la structure d'affectation principale de l'intervenant structure_principale_individu AS ( SELECT DISTINCT uni.c_individu_chaine, SELECT DISTINCT uni.c_individu_chaine, FIRST_VALUE(aff.structure_id) OVER (PARTITION BY uni.c_individu_chaine ORDER BY aff.date_fin DESC) z_structure_id FROM octo.individu_affectation@octoprod aff JOIN octo.individu_unique@octoprod uni ON uni.c_individu_chaine = aff.individu_id WHERE aff.t_principale = 'O' --AND aff.type_id = 4--Uniquement les affectations d'enseignement AND aff.date_fin + 1 >= (SYSDATE - (365 * 2)) ), --Autre façon de trouver les structures d'affectation d'enseignement structure_aff_enseigne AS ( -- On prend en priorite l'affectation principale -- Si plusieurs, alors c'est celle qui commence le + tard qui est prise en comtpe SELECT individu_id, max(structure_id) KEEP (DENSE_RANK LAST ORDER BY t_principale, date_debut) structure_id FROM octo.individu_affectation@octoprod WHERE type_id = 4 AND date_fin + 1 >= (SYSDATE - (365 * 2)) GROUP BY individu_id ), --CNU arrangé cnua AS ( SELECT gra.individu_id individu_id, SELECT gra.individu_id individu_id, nvl(carr.c_cnu, darr.c_cnu) code_cnu_arrange, nvl(carr.lib_long, darr.lib_long) libelle_cnu_arrange, nvl(carr.groupe, darr.groupe) groupe_cnu_arrange FROM octo.individu_grade@octoprod gra LEFT JOIN octo.cnu_spec_cnu_adapte@octoprod ccarr ON (gra.cnu_id=ccarr.cnu_id AND (gra.cnu_specialite_id is null OR gra.cnu_specialite_id=ccarr.cnu_specialite_id)) FROM octo.individu_grade@octoprod gra LEFT JOIN octo.cnu_spec_cnu_adapte@octoprod ccarr ON (gra.cnu_id = ccarr.cnu_id AND (gra.cnu_specialite_id is null OR gra.cnu_specialite_id = ccarr.cnu_specialite_id)) LEFT JOIN octo.cnu_adapte@octoprod carr ON (ccarr.cnu_adapte_id = carr.id) LEFT JOIN octo.discipline_cnu_adapte@octoprod dcarr ON (gra.discipline_sec_id = dcarr.discipline_sec_id) LEFT JOIN octo.cnu_adapte@octoprod darr ON (dcarr.cnu_adapte_id = darr.id) WHERE sysdate BETWEEN gra.d_debut AND nvl(gra.d_fin, sysdate) WHERE sysdate BETWEEN gra.d_debut AND nvl(gra.d_fin, sysdate) AND (gra.cnu_id is not null OR gra.discipline_sec_id is not null) ), /*Individu unique pour avoir qu'un seul individu unique dans l'ordre c_source SIHAM, HARP, APO Car individu unique peut avoir plusieurs entrée (Harpége et Apogé par exemple) dans la table individu_unique, Loading @@ -82,15 +90,13 @@ MATERIALIZED VIEW MV_INTERVENANT AS pui HARPEGE puis APOGEE en dernier lieu*/ induni AS ( SELECT DISTINCT FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine, FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source, FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu FROM ( SELECT DISTINCT u.c_individu_chaine, SELECT DISTINCT FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine, FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source, FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu FROM ( SELECT DISTINCT u.c_individu_chaine, u.c_source, u.c_src_individu, CASE WHEN u.c_source = 'SIHAM' THEN 1 CASE WHEN u.c_source = 'SIHAM' THEN 1 WHEN u.c_source = 'HARP' THEN 2 WHEN u.c_source = 'OCTO' THEN 3 WHEN u.c_source = 'APO' THEN 4 Loading @@ -109,10 +115,6 @@ SELECT DISTINCT ELSE NULL END code_rh, indc.ldap_uid utilisateur_code, str.code z_structure_id, /*CASE WHEN str2.code <> str.code THEN str2.code ELSE NULL END z_structure_id_n2,*/ i.z_statut_id z_statut_id, grade.c_grade z_grade_id, COALESCE(cnua.code_cnu_arrange, '00') z_discipline_id, Loading Loading @@ -184,7 +186,9 @@ FROM i ON i.code = induni.c_individu_chaine --AND induni.c_source IN ('HARP', 'OCTO', 'SIHAM')) LEFT JOIN octo.individu@octoprod ind ON ind.c_individu_chaine = induni.c_individu_chaine --On récupére la structure principale de l'individu LEFT JOIN structure_principale_individu spi ON spi.c_individu_chaine = induni.c_individu_chaine LEFT JOIN structure_aff_enseigne sae ON sae.individu_id = induni.c_individu_chaine --On récupére le code de la structure d'affectation principal de l'individu LEFT JOIN v_structure@octoprod str ON str.id = sae.structure_id --On récupére le grade de l'individu LEFT JOIN octo.individu_grade@octoprod indg ON induni.c_individu_chaine = indg.individu_id AND COALESCE(indg.d_fin, to_date('01/01/9999', 'dd/mm/YYYY')) > SYSDATE Loading @@ -203,16 +207,6 @@ FROM i -- On ne prend que les comptes qui ne sont pas étudiants LEFT JOIN octo.individu_compte@octoprod indc ON indc.individu_id = induni.c_individu_chaine AND not regexp_like(ldap_uid, 'e[0-9]{8}') --On récupére le code de la structure d'affectation principal de l'individu LEFT JOIN v_structure@octoprod str ON str.id = spi.z_structure_id LEFT JOIN v_structure@octoprod str2 ON str.niv2_id = str2.id --On récupére la discipline adaptée directement dans Octopus LEFT JOIN cnua cnua ON cnua.individu_id = induni.c_individu_chaine WHERE i.validite_fin >= (SYSDATE - (365 * 2)) No newline at end of file --AND indc.id IS NOT NULL --Filtre à activer si on ne veut pas remonter les comptes octopus non activés --AND induni.c_individu_chaine = 4251-- Filtre avec code octopus --AND ind.nom_famille = 'DURANDY' --AND induni.c_src_individu = 45053-- Filtre avec code harpege --ORDER BY i.code ASC No newline at end of file