src: |
  WITH montant_masse_salariale AS (
         SELECT date_part('YEAR'::text, p_croisement_paie_planning.date)::numeric AS annee,
            sum(p_croisement_paie_planning.mont_mass_sala_inte_pror_temp_vali) AS masse_salariale_bloc
           FROM rh.p_croisement_paie_planning
             JOIN rh.t_classes ON t_classes.code = 'CTI_CONTRIBUTION_BLOC_OPERATOIRE'::text
             JOIN rh.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid
             JOIN rh.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid
             JOIN rh.p_planning_mouvement ON p_planning_mouvement.oid = p_croisement_paie_planning.planning_id AND p_planning_mouvement.service_id = t_classes_sections_elements.to_id
          GROUP BY (date_part('YEAR'::text, p_croisement_paie_planning.date)::numeric)
        ), comptes AS (
         SELECT comptes_1.annee,
            comptes_1.cout_consommable,
            comptes_1.cout_energie,
            comptes_1.cout_structure
           FROM crosstab('SELECT date_part(''YEAR''::text, p_historique_ecritures.date_ecriture)::numeric AS annee,
            t_classes_sections.texte,
            sum(p_historique_ecritures.montant_debit) AS montant_debit
           FROM compta.p_historique_ecritures
             JOIN compta.t_journaux ON p_historique_ecritures.journal_id = t_journaux.oid
             JOIN compta.t_comptes_c ON p_historique_ecritures.compte_id = t_comptes_c.oid
             JOIN compta.t_comptes_c t_comptes_c_extra ON p_historique_ecritures.compte_extra_id = t_comptes_c_extra.oid
             JOIN compta.t_comptes_c t_comptes_c_contrepartie ON p_historique_ecritures.compte_contrepartie_id = t_comptes_c_contrepartie.oid
             JOIN compta.t_sites ON p_historique_ecritures.site_id = t_sites.oid
             JOIN compta.t_partenaires ON p_historique_ecritures.partenaire_id = t_partenaires.oid
             JOIN compta.t_sections_analytiques ON p_historique_ecritures.section_analytique_id = t_sections_analytiques.oid
             JOIN compta.t_comptes_c t_comptes_c_budget ON p_historique_ecritures.compte_budget_id = t_comptes_c_budget.oid
             JOIN compta.t_classes ON t_classes.code = ''CTI_CONTRIBUTION_BLOC_OPERATOIRE''::text
             JOIN compta.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid
             JOIN compta.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid AND t_classes_sections_elements.to_id = p_historique_ecritures.compte_id
          WHERE p_historique_ecritures.journal_id = 2
          GROUP BY 1,2 ORDER BY 1,2'::text) comptes_1(annee numeric, cout_consommable numeric, cout_energie numeric, cout_structure numeric)
        )
  SELECT annees.annees AS annee,
    montant_masse_salariale.masse_salariale_bloc,
    comptes.cout_consommable,
    comptes.cout_energie,
    comptes.cout_structure
   FROM generate_series(date_part('YEAR'::text, now() - '5 years'::interval)::numeric, date_part('YEAR'::text, now())::numeric) annees(annees)
     LEFT JOIN montant_masse_salariale ON montant_masse_salariale.annee = annees.annees
     LEFT JOIN comptes ON comptes.annee = annees.annees;