'''' THEN SEM_AFFECT_TYPE3 WHEN SEM_AFFECT_TYPE1 <> '''' AND SEM_AFFECT_TYPE1 = LAG(SEM_AFFECT_TYPE1) OVER (PARTITION BY ID_PAISALARIE ORDER BY ID_PAISALARIEEMPLOI) AND LAG(SEM_AFFECT_TYPE3) OVER (PARTITION BY ID_PAISALARIE ORDER BY ID_PAISALARIEEMPLOI) <> '''' THEN LAG(SEM_AFFECT_TYPE3) OVER (PARTITION BY ID_PAISALARIE ORDER BY ID_PAISALARIEEMPLOI) WHEN SEM_AFFECT_TYPE1 <> '''' AND SEM_AFFECT_TYPE1 = LEAD(SEM_AFFECT_TYPE1) OVER (PARTITION BY ID_PAISALARIE ORDER BY ID_PAISALARIEEMPLOI) THEN LEAD(SEM_AFFECT_TYPE3) OVER (PARTITION BY ID_PAISALARIE ORDER BY ID_PAISALARIEEMPLOI) ELSE '''' END AS new_SEM_AFFECT_TYPE3 FROM w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ) subview WHERE PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI = subview.ID_PAISALARIEEMPLOI AND COALESCE(PAISALARIEEMPLOI.SEM_AFFECT_TYPE3,'''') IS DISTINCT FROM new_SEM_AFFECT_TYPE3 AND new_SEM_AFFECT_TYPE3 <> '''' ',50) ; ]]> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',1) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',1) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',1) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',1) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',1) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',1) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS code, COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN SEM_AFFECT_TYPE1 WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN SEM_AFFECT_TYPE2 WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN SEM_AFFECT_TYPE3 WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN SEM_AFFECT_TYPE4 WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN SEM_AFFECT_TYPE5 WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN SEM_AFFECT_TYPE6 ELSE NULL END, chr(1)||'*') AS code_original, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte_court FROM w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI JOIN rh.t_divers ON t_divers.code = 'SILAE_SERVICE' GROUP BY 2 ; -- Identification des specialites DROP TABLE IF EXISTS temp.x_ref_specialite ; CREATE TABLE temp.x_ref_specialite AS SELECT MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',1) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',1) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',1) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',1) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',1) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',1) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS code, COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN SEM_AFFECT_TYPE1 WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN SEM_AFFECT_TYPE2 WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN SEM_AFFECT_TYPE3 WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN SEM_AFFECT_TYPE4 WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN SEM_AFFECT_TYPE5 WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN SEM_AFFECT_TYPE6 ELSE NULL END, chr(1)||'*') AS code_original, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte_court FROM w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI JOIN rh.t_divers ON t_divers.code = 'SILAE_SPECIALITE' GROUP BY 2 ; -- Identification des codes emploi DROP TABLE IF EXISTS temp.x_ref_code_emploi ; CREATE TABLE temp.x_ref_code_emploi AS SELECT MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',1) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',1) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',1) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',1) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',1) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',1) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS code, COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN SEM_AFFECT_TYPE1 WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN SEM_AFFECT_TYPE2 WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN SEM_AFFECT_TYPE3 WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN SEM_AFFECT_TYPE4 WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN SEM_AFFECT_TYPE5 WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN SEM_AFFECT_TYPE6 ELSE NULL END, chr(1)||'*') AS code_original, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE4 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE5 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE6 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte, MAX(COALESCE( CASE WHEN t_divers.valeur = 'AFFECT_TYPE1' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE1) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE1,'-',2) ELSE SEM_AFFECT_TYPE1 END WHEN t_divers.valeur = 'AFFECT_TYPE2' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE2) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE2,'-',2) ELSE SEM_AFFECT_TYPE2 END WHEN t_divers.valeur = 'AFFECT_TYPE3' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE3) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE3,'-',2) ELSE SEM_AFFECT_TYPE3 END WHEN t_divers.valeur = 'AFFECT_TYPE4' AND SEM_AFFECT_TYPE1 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE4) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE4,'-',2) ELSE SEM_AFFECT_TYPE4 END WHEN t_divers.valeur = 'AFFECT_TYPE5' AND SEM_AFFECT_TYPE2 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE5) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE5,'-',2) ELSE SEM_AFFECT_TYPE5 END WHEN t_divers.valeur = 'AFFECT_TYPE6' AND SEM_AFFECT_TYPE3 <> '' THEN CASE WHEN POSITION('-' IN SEM_AFFECT_TYPE6) BETWEEN 4 AND 7 THEN split_part(SEM_AFFECT_TYPE6,'-',2) ELSE SEM_AFFECT_TYPE6 END ELSE NULL END, chr(1)||'*')) AS texte_court FROM w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI JOIN rh.t_divers ON t_divers.code = 'SILAE_CODEEMPLOI' GROUP BY 2 ; -- Identification des types d'horaire -- Identification des grilles DROP TABLE IF EXISTS temp.x_ref_grille ; CREATE TABLE temp.x_ref_grille AS SELECT null::text AS code_original, null::text AS code, null::text AS texte, null::text AS texte_court limit 0 ; -- Identification des groupes de grilles -- Identification des motifs d'arret -- Identification des precisions du motif d'arret -- Identification des motifs de visite medicale -- Identification des circonstances d'accident du travail -- Identification des lieux d'accident du travail -- Identification de la nature de l'accident du travail -- Identification des sieges d'accident du travail -- Identification des listes de formations -- Sections analytiques DROP TABLE IF EXISTS w_PAISALARIEREPANASPE; CREATE TEMP TABLE w_PAISALARIEREPANASPE AS SELECT *, 0::bigint AS oid_service, ''::text AS services, ''::text AS code_service FROM prod_silae.PAISALARIEREPANASPE ; UPDATE w_PAISALARIEREPANASPE SET oid_service = base.cti_to_number(substr(split_part(RAS_AFFECTATION,'-',1),4)), code_service = substr(split_part(RAS_AFFECTATION,'-',1),4), services = CASE WHEN RAS_AFFECTATION LIKE '%-%' THEN split_part(RAS_AFFECTATION,'-',2) ELSE substr(split_part(RAS_AFFECTATION,'-',1),4) END WHERE ( RAS_AFFECTATION LIKE '%-%' OR base.cti_to_number(split_part(RAS_AFFECTATION,'-',1)) > 0 ) AND length(split_part(RAS_AFFECTATION,'-',1)) = 6 ; UPDATE w_PAISALARIEREPANASPE SET code_service = RAS_AFFECTATION, services = RAS_AFFECTATION WHERE oid_service = 0 ; ANALYSE w_PAISALARIEREPANASPE ; INSERT INTO rh.t_section_analytique(code_original, code, texte, texte_court) SELECT code_service, MAX(code_service), MAX(services), MAX(substr(services, 1, 50)) FROM w_PAISALARIEREPANASPE WHERE oid_service = 0 AND code_service <> '' AND code_service NOT IN (SELECT CODE_ORIGINAL FROM rh.t_section_analytique WHERE code_original IS NOT NULL) GROUP BY 1 ; UPDATE w_PAISALARIEREPANASPE SET oid_service = t_section_analytique.oid FROM rh.t_section_analytique WHERE code_service = code_original ; DROP TABLE IF EXISTS temp.x_ref_section_analytique ; CREATE TABLE temp.x_ref_section_analytique AS WITH affectation AS ( SELECT oid_service, code_service, services FROM w_PAISALARIEREPANASPE PAISALARIEREPANASPE GROUP BY 1,2,3 ) SELECT oid_service AS oid, code_service AS code_original, code_service AS code, MAX(services) AS texte, MAX(services) AS texte_court FROM affectation GROUP BY 1,2,3 ; -- Identification des rubriques de paie. DROP TABLE IF EXISTS w_hp_0 ; CREATE TEMP TABLE w_hp_0 AS SELECT PAIBULLETINLIGNE.ctid::text AS cti_ctid, BLI_ZONE||'|'||COALESCE(BLI_CODELIBELLE, '-')||'|'||COALESCE(BLI_MARQUE1, '-')||'|'||COALESCE(BLI_MARQUEINTERNE, '-') AS rub, ID_PAIBULLETINLIGNE, PAIBULLETINLIGNE.ID_PAIBULLETIN, BLI_ZONE, BLI_CODELIBELLE, BLI_LIBELLE, BLI_MARQUE1, BLI_MARQUEINTERNE, BLI_RESULTATS, BLI_BASES, BLI_BASEP, BLI_TAUXOUMONTANTS, BLI_TAUXOUMONTANTP, BLI_RESULTATP FROM prod_silae.PAIBULLETINLIGNE JOIN prod_silae.PAIBULLETIN ON PAIBULLETINLIGNE.ID_PAIBULLETIN = PAIBULLETIN.ID_PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI WHERE ( BLI_RESULTATS <> 0 OR BLI_BASES <> 0 OR BLI_BASEP <> 0 OR BLI_TAUXOUMONTANTS <> 0 OR BLI_TAUXOUMONTANTP <> 0 OR BLI_RESULTATP <> 0 ) UNION ALL SELECT 'SALBAS|'||PAIBULLETIN.ctid::text AS cti_ctid, '2|SALBAS||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 2 AS BLI_ZONE, 'SALBAS'::text AS BLI_CODELIBELLE, 'Salaire de base'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, PAIBULLETIN.BUL_SALAIREDEBASE AS BLI_RESULTATS, PAIBULLETIN.BUL_NBHC AS BLI_BASES, 0::numeric AS BLI_BASEP, PAIBULLETIN.BUL_TAUXHORAIRE AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, 0::numeric AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI UNION ALL SELECT 'TOTHTRAV|'||PAIBULLETIN.ctid::text AS cti_ctid, '2|TOTHTRAV||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 2 AS BLI_ZONE, 'TOTHTRAV'::text AS BLI_CODELIBELLE, 'Total heures travaillees'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, 0::numeric AS BLI_RESULTATS, PAIBULLETIN.BUL_NBHMN AS BLI_BASES, 0::numeric AS BLI_BASEP, 0::numeric AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, 0::numeric AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI UNION ALL SELECT 'BRUT|'||PAIBULLETIN.ctid::text AS cti_ctid, '2|BRUT||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 2 AS BLI_ZONE, 'BRUT'::text AS BLI_CODELIBELLE, 'Salaire Brut'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, PAIBULLETIN.BUL_BRUT AS BLI_RESULTATS, 0::numeric AS BLI_BASES, 0::numeric AS BLI_BASEP, 0::numeric AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, 0::numeric AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI UNION ALL SELECT 'TOTRET|'||PAIBULLETIN.ctid::text AS cti_ctid, '3|TOTRET||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 3 AS BLI_ZONE, 'TOTRET'::text AS BLI_CODELIBELLE, 'Total des retenues'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, PAIBULLETIN.BUL_CUMULRETENUESSD + PAIBULLETIN.BUL_CUMULRETENUESSND AS BLI_RESULTATS, 0::numeric AS BLI_BASES, 0::numeric AS BLI_BASEP, 0::numeric AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, PAIBULLETIN.bul_cumulretenuesp AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI UNION ALL SELECT 'NETIMP|'||PAIBULLETIN.ctid::text AS cti_ctid, '4|NETIMP||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 4 AS BLI_ZONE, 'NETIMP'::text AS BLI_CODELIBELLE, 'Net Imposable'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, PAIBULLETIN.BUL_NETIMPOSABLE AS BLI_RESULTATS, 0::numeric AS BLI_BASES, 0::numeric AS BLI_BASEP, 0::numeric AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, 0::numeric AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI UNION ALL SELECT 'NETAPAYER|'||PAIBULLETIN.ctid::text AS cti_ctid, '4|NETAPAYER||' AS rub, PAIBULLETIN.ID_PAIBULLETIN AS ID_PAIBULLETINLIGNE, PAIBULLETIN.ID_PAIBULLETIN, 4 AS BLI_ZONE, 'NETAPAYER'::text AS BLI_CODELIBELLE, 'Net a Payer'::text AS BLI_LIBELLE, ''::text AS BLI_MARQUE1, ''::text AS BLI_MARQUEINTERNE, PAIBULLETIN.BUL_NETAPAYER AS BLI_RESULTATS, 0::numeric AS BLI_BASES, 0::numeric AS BLI_BASEP, 0::numeric AS BLI_TAUXOUMONTANTS, 0::numeric AS BLI_TAUXOUMONTANTP, 0::numeric AS BLI_RESULTATP FROM prod_silae.PAIBULLETIN JOIN w_PAISALARIEEMPLOI_ets PAISALARIEEMPLOI ON PAIBULLETIN.ID_PAISALARIEEMPLOI = PAISALARIEEMPLOI.ID_PAISALARIEEMPLOI ; ANALYSE w_hp_0 ; -- Formatage rubrique selon texte DROP TABLE IF EXISTS w_hp_0_rub; CREATE TEMP TABLE w_hp_0_rub AS SELECT BLI_ZONE, BLI_CODELIBELLE, BLI_LIBELLE, trim(replace(BLI_LIBELLE,' ',' ')) AS texte, ''::text AS texte_maj, ''::text AS code, ''::text AS code_original, count(*) AS nb FROM w_hp_0 JOIN rh.t_divers ON t_divers.code = 'SILAE_RUBRIQUE' WHERE t_divers.valeur = '2' GROUP BY 1,2,3 ; UPDATE w_hp_0_rub SET texte = trim(left(texte, LEAST( CASE WHEN position('(' IN texte) > 5 THEN position('(' IN texte)-1 ELSE 999 END, CASE WHEN position('0' IN texte) > 5 THEN position('0' IN texte)-1 ELSE 999 END, CASE WHEN position('1' IN texte) > 5 THEN position('1' IN texte)-1 ELSE 999 END, CASE WHEN position('2' IN texte) > 5 THEN position('2' IN texte)-1 ELSE 999 END, CASE WHEN position('3' IN texte) > 5 THEN position('3' IN texte)-1 ELSE 999 END, CASE WHEN position('4' IN texte) > 5 THEN position('4' IN texte)-1 ELSE 999 END, CASE WHEN position('5' IN texte) > 5 THEN position('5' IN texte)-1 ELSE 999 END, CASE WHEN position('6' IN texte) > 5 THEN position('6' IN texte)-1 ELSE 999 END, CASE WHEN position('7' IN texte) > 5 THEN position('7' IN texte)-1 ELSE 999 END, CASE WHEN position('8' IN texte) > 5 THEN position('8' IN texte)-1 ELSE 999 END, CASE WHEN position('9' IN texte) > 5 THEN position('9' IN texte)-1 ELSE 999 END, CASE WHEN position('Acompte d' IN texte) > 0 THEN position('Acompte de' IN texte)+6 ELSE 999 END, CASE WHEN position(' jan' IN lower(texte)) > 0 THEN position(' jan' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' fév' IN lower(texte)) > 0 THEN position(' fév' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' mars' IN lower(texte)) > 0 THEN position(' mars' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' avr' IN lower(texte)) > 0 THEN position(' avr' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' mai' IN lower(texte)) > 0 THEN position(' mai' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' juin' IN lower(texte)) > 0 THEN position(' juin' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' juil' IN lower(texte)) > 0 THEN position(' juil' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' aout' IN lower(texte)) > 0 THEN position(' aout' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' sept' IN lower(texte)) > 0 THEN position(' sept' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' oct' IN lower(texte)) > 0 THEN position(' oct' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' nov' IN lower(texte)) > 0 THEN position(' nov' IN lower(texte))-1 ELSE 999 END, CASE WHEN position(' déc' IN lower(texte)) > 0 THEN position(' déc' IN lower(texte))-1 ELSE 999 END ))) WHERE texte like '%0%' OR texte like '%(%' OR texte like '%1%' OR texte like '%2%' OR texte like '%3%' OR texte like '%4%' OR texte like '%5%' OR texte like '%6%' OR texte like '%7%' OR texte like '%8%' OR texte like '%9%' OR texte like '%Acompte d%' OR texte ilike '% jan%' OR texte ilike '% fév%' OR texte ilike '% mars%' OR texte ilike '% avr%' OR texte ilike '% mai%' OR texte ilike '% juin%' OR texte ilike '% juil' OR texte ilike '% aout%' OR texte ilike '% sept%' OR texte ilike '% oct%' OR texte ilike '% nov%' OR texte ilike '% déc%' ; UPDATE w_hp_0_rub SET texte = trim(left(texte,length(texte)-3)) WHERE texte ilike '% du' OR texte ilike '% de' ; UPDATE w_hp_0_rub SET texte_maj = translate(upper(base.cti_remove_accent(texte)),'.:/-+''','') ; UPDATE w_hp_0_rub SET code_original = BLI_ZONE || COALESCE(BLI_CODELIBELLE,'ZZZ') || CASE WHEN COALESCE(BLI_CODELIBELLE,'') NOT IN ('SALBAS','TOTHTRAV','BRUT','TOTRET','NETIMP','NETAPAYER') THEN translate(texte_maj,' ','') ELSE '' END, code = BLI_ZONE || COALESCE(BLI_CODELIBELLE,'ZZZ') || CASE WHEN COALESCE(BLI_CODELIBELLE,'') NOT IN ('SALBAS','TOTHTRAV','BRUT','TOTRET','NETIMP','NETAPAYER') THEN substr(split_part(texte_maj,' ',1),1,3) || substr(split_part(texte_maj,' ',2),1,3) || substr(split_part(texte_maj,' ',3),1,3) || substr(split_part(texte_maj,' ',4),1,3) || substr(split_part(texte_maj,' ',5),1,3) ELSE '' END ; ANALYSE w_hp_0_rub ; UPDATE w_hp_0 SET rub = code_original FROM w_hp_0_rub WHERE w_hp_0.BLI_ZONE = w_hp_0_rub.BLI_ZONE AND COALESCE(w_hp_0.BLI_CODELIBELLE,'') = COALESCE(w_hp_0_rub.BLI_CODELIBELLE,'') AND w_hp_0.BLI_LIBELLE = w_hp_0_rub.BLI_LIBELLE ; DROP TABLE IF EXISTS w_rubriques_2; CREATE TEMP TABLE w_rubriques_2 AS SELECT code_original, (max(ARRAY[to_char(nb,'FM00000000'),texte]))[2] AS texte, (max(ARRAY[to_char(nb,'FM00000000'),code]))[2] AS code FROM ( SELECT code_original, texte, code, sum(nb) AS nb FROM w_hp_0_rub GROUP BY 1,2,3 ) subview GROUP BY 1 ; ANALYSE w_rubriques_2 ; -- Table des rubriques DROP TABLE IF EXISTS temp.x_ref_rubrique ; CREATE TABLE temp.x_ref_rubrique AS WITH rub_det_1 AS ( SELECT rub, (MAX(ARRAY[to_char(ID_PAIBULLETINLIGNE,'FM000000000000000'),BLI_LIBELLE]))[2] AS texte, BLI_ZONE IN (2, 3, 4) AS p_detail, BLI_ZONE IN (2, 3, 4) AS p_nombre, BLI_ZONE IN (2, 3, 4) AS p_base, false AS p_heures_contrat, false AS p_heures_payees, false AS p_heures_travaillees, rub between 'B000' and 'B999' or rub between 'C100' and 'C999' AS p_masse_salariale, BLI_ZONE = 2 AS p_brut, false AS p_avantage_nature, false AS p_frais_imposables, BLI_ZONE = 3 AS p_cotisation_salarie, BLI_ZONE = 3 AS p_cotisation_patronale, BLI_ZONE = 4 AS p_od_net_salarie, false AS p_od_net_patronale, BLI_ZONE IN (2, 3) OR (BLI_ZONE = 4 AND substr(BLI_CODELIBELLE, 1, 1) NOT IN ('K', 'F', 'B', 'A', 'J')) AS p_net_imposable, BLI_ZONE IN (2, 3, 4) AS p_net_a_payer FROM w_hp_0 WHERE rub != '4|K07|-|PAS' GROUP BY 1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 ) SELECT rub AS code_original, COALESCE(w_rubriques_2.code,rub) AS code, COALESCE(w_rubriques_2.texte,rub_det_1.texte) AS texte, null::text AS texte_court, -1 AS rang_edition, false AS p_cumul, p_detail AS p_detail, p_nombre AS p_nombre, 0 AS s_nombre, 1 AS c_nombre, p_base AS p_base, 1 AS s_base, 1 AS c_base, p_heures_contrat AS p_heures_contrat, 0 AS s_heures_contrat, 1 AS c_heures_contrat, p_heures_payees AS p_heures_payees, 0 AS s_heures_payees, 1 AS c_heures_payees, p_heures_travaillees AS p_heures_travaillees, 0 AS s_heures_travaillees, 1 AS c_heures_travaillees, p_masse_salariale AS p_masse_salariale, case when p_cotisation_patronale or p_od_net_patronale then 5 else 3 end AS s_masse_salariale, 1 AS c_masse_salariale, p_brut AS p_brut, 3 AS s_brut, 1 AS c_brut, p_avantage_nature AS p_avantage_nature, 3 AS s_avantage_nature, 1 AS c_avantage_nature, p_frais_imposables AS p_frais_imposables, 3 AS s_frais_imposables, 1 AS c_frais_imposables, p_cotisation_salarie AS p_cotisation_salarie, 3 AS s_cotisation_salarie, -1 AS c_cotisation_salarie, p_cotisation_patronale AS p_cotisation_patronale, 5 AS s_cotisation_patronale, 1 AS c_cotisation_patronale, p_od_net_salarie AS p_od_net_salarie, 3 AS s_od_net_salarie, 1 AS c_od_net_salarie, p_od_net_patronale AS p_od_net_patronale, 5 AS s_od_net_patronale, 1 AS c_od_net_patronale, p_net_imposable AS p_net_imposable, 3 AS s_net_imposable, case when p_cotisation_salarie then -1 else 1 end AS c_net_imposable, p_net_a_payer AS p_net_a_payer, 3 AS s_net_a_payer, case when p_cotisation_salarie then -1 else 1 end AS c_net_a_payer FROM rub_det_1 LEFT JOIN w_rubriques_2 ON rub = w_rubriques_2.code_original ; ]]> x_hst_bulletin.date_debut WHERE x_hst_bulletin.cnt_code_original is null GROUP BY 1 ) UPDATE temp.x_hst_bulletin set cnt_code_original = toto.cnt_code_original, est_hors_periode = 1 FROM toto WHERE x_hst_bulletin.row_id = toto.row_id ; -- ICI : Tous les bulletins doivent avoir un contrat de renseigne. -- A remonter plus tard dans une table speciale avant suppression pour controle expert. delete FROM temp.x_hst_bulletin WHERE cnt_code_original is null ; -- HISTORIQUE ETP Theorique contrat. DROP TABLE IF EXISTS temp.x_hst_etp_contrat ; CREATE TABLE temp.x_hst_etp_contrat AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, etp_contrat FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_categorie_socio_professionnelle ; CREATE TABLE temp.x_hst_categorie_socio_professionnelle AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, categorie_socio_professionnelle_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE Motif de debut. DROP TABLE IF EXISTS temp.x_hst_motif_debut_contrat ; CREATE TABLE temp.x_hst_motif_debut_contrat AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, motif_debut_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE Motif de fin. DROP TABLE IF EXISTS temp.x_hst_motif_fin_contrat ; CREATE TABLE temp.x_hst_motif_fin_contrat AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, motif_fin_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE Types de contrat. DROP TABLE IF EXISTS temp.x_hst_type_contrat ; CREATE TABLE temp.x_hst_type_contrat AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, type_contrat_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_qualification ; CREATE TABLE temp.x_hst_qualification AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, qualification_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE Statut. DROP TABLE IF EXISTS temp.x_hst_statut ; CREATE TABLE temp.x_hst_statut AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, statut_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_type_temps_travail ; CREATE TABLE temp.x_hst_type_temps_travail AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, type_temps_travail_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_service ; CREATE TABLE temp.x_hst_service AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, service_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_code_emploi ; CREATE TABLE temp.x_hst_code_emploi AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, code_emploi_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE CSP. DROP TABLE IF EXISTS temp.x_hst_specialite ; CREATE TABLE temp.x_hst_specialite AS SELECT ety_code_original, sal_code_original, cnt_code_original, date_debut AS date_effet, specialite_code_original FROM temp.x_hst_contrat GROUP BY 1,2,3,4,5 ; -- HISTORIQUE GRILLE. DROP TABLE IF EXISTS temp.x_hst_grille ; CREATE TABLE temp.x_hst_grille AS SELECT null::text AS ety_code_original, null::text AS sal_code_original, null::text AS cnt_code_original, null::date AS date_effet, null::text AS grille_code_original limit 0 ; ]]> = to_char(rhp('rhprovider_start')::date, 'YYYYMM') ; ]]>