You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

107 lines
5.9 KiB

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;