src: | WITH w_indicateurs AS ( SELECT t_indicateurs.oid AS indicateur_id, CASE WHEN t_indicateurs.table_name::text = '*RAPPORTCALC'::text THEN '*CALC'::text || t_rapports_rubriques.calc_formula ELSE t_indicateurs.code END || CASE WHEN t_rapports_rubriques.indicateur_condition_id[1] > 0 THEN '#'::text || t_rapports_rubriques.indicateur_condition_id[1]::text ELSE ''::text END AS indicateur_code, CASE WHEN t_rapports_rubriques.entete_etendue::text <> ''::text THEN t_rapports_rubriques.entete_etendue::text::character varying ELSE t_indicateurs.entete_etendue END AS indicateur_entete_etendue, max( CASE WHEN t_rapports_rubriques.output_format <> ''::text THEN t_rapports_rubriques.output_format::character varying ELSE t_indicateurs.output_format END::text) AS indicateur_output_format, (min(ARRAY[ CASE WHEN t_rapports.code ~~ 'CTI%'::text THEN '0'::text ELSE '1'::text END, t_rapports.code]))[2] AS rapport_code, (min(ARRAY[ CASE WHEN t_rapports.code ~~ 'CTI%'::text THEN '0'::text ELSE '1'::text END, t_rapports.code, t_rapports.texte::text]))[3] AS rapport_texte, (min(ARRAY[ CASE WHEN t_rapports.code ~~ 'CTI%'::text THEN '0'::text ELSE '1'::text END, t_rapports.code, to_char(t_rapports_rubriques.numero_rubrique, 'FM00000'::text)]))[3]::numeric AS numero_rubrique FROM eco.t_indicateurs JOIN eco.t_rapports_rubriques ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid JOIN eco.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid WHERE t_rapports.code ~~ 'CTI\_VIEW\_%'::text AND t_rapports_rubriques.calc_formula !~~ '\%T(%'::text GROUP BY t_indicateurs.oid, ( CASE WHEN t_indicateurs.table_name::text = '*RAPPORTCALC'::text THEN '*CALC'::text || t_rapports_rubriques.calc_formula ELSE t_indicateurs.code END || CASE WHEN t_rapports_rubriques.indicateur_condition_id[1] > 0 THEN '#'::text || t_rapports_rubriques.indicateur_condition_id[1]::text ELSE ''::text END), ( CASE WHEN t_rapports_rubriques.entete_etendue::text <> ''::text THEN t_rapports_rubriques.entete_etendue::text::character varying ELSE t_indicateurs.entete_etendue END) ORDER BY ((min(ARRAY[ CASE WHEN t_rapports.code ~~ 'CTI%'::text THEN '0'::text ELSE '1'::text END, t_rapports.code]))[2]), ((min(ARRAY[ CASE WHEN t_rapports.code ~~ 'CTI%'::text THEN '0'::text ELSE '1'::text END, t_rapports.code, to_char(t_rapports_rubriques.numero_rubrique, 'FM00000'::text)]))[3]::numeric) ) SELECT substr(w_indicateurs.rapport_code, 10, 3) AS contexte, w_indicateurs.rapport_code, 0::numeric AS numero_rubrique, (min(ARRAY[w_indicateurs.numero_rubrique::text, w_indicateurs.indicateur_code]))[2] AS code, w_indicateurs.rapport_texte AS texte, 1::numeric AS level, ('VIEW.CONTEXTE=='''::text || substr(w_indicateurs.rapport_code, 10, 3)) || ''''::text AS condition, substr(w_indicateurs.rapport_code, 10, 3) || ''''::text AS viewtype, ''::text AS alias FROM w_indicateurs WHERE w_indicateurs.rapport_code <> ('CTI_VIEW_'::text || substr(w_indicateurs.rapport_code, 10, 3)) GROUP BY (substr(w_indicateurs.rapport_code, 10, 3)), w_indicateurs.rapport_code, w_indicateurs.rapport_texte UNION SELECT substr(w_indicateurs.rapport_code, 10, 3) AS contexte, w_indicateurs.rapport_code, w_indicateurs.numero_rubrique * 10::numeric AS numero_rubrique, w_indicateurs.indicateur_code AS code, w_indicateurs.indicateur_entete_etendue AS texte, CASE WHEN w_indicateurs.rapport_code <> ('CTI_VIEW_'::text || substr(w_indicateurs.rapport_code, 10, 3)) THEN 2::numeric ELSE 1::numeric END AS level, ('VIEW.CONTEXTE=='''::text || substr(w_indicateurs.rapport_code, 10, 3)) || ''''::text AS condition, substr(w_indicateurs.rapport_code, 10, 3) || ''''::text AS viewtype, CASE WHEN row_number() OVER (PARTITION BY (substr(w_indicateurs.rapport_code, 10, 3)) ORDER BY w_indicateurs.numero_rubrique) = 1 THEN '*DFT'::text ELSE ''::text END AS alias FROM w_indicateurs UNION SELECT substr(w_indicateurs.rapport_code, 10, 3) AS contexte, w_indicateurs.rapport_code, w_indicateurs.numero_rubrique * 10::numeric + 1::numeric AS numero_rubrique, ('*CALC%T(['::text || w_indicateurs.indicateur_code) || '])'::text AS code, w_indicateurs.indicateur_entete_etendue::text || ' (Ratio % / Total)'::text AS texte, CASE WHEN w_indicateurs.rapport_code <> ('CTI_VIEW_'::text || substr(w_indicateurs.rapport_code, 10, 3)) THEN 3::numeric ELSE 2::numeric END AS level, ('VIEW.CONTEXTE=='''::text || substr(w_indicateurs.rapport_code, 10, 3)) || ''' && VIEW.VIEWTYPE==''ANZ'''::text AS condition, 'ANZ'::text AS viewtype, ''::text AS alias FROM w_indicateurs WHERE w_indicateurs.indicateur_entete_etendue::text !~~ '%\%%'::text AND w_indicateurs.indicateur_output_format !~~ '%\%%'::text ORDER BY 1, 2, 3;