|
|
return: text
|
|
|
lang: plpgsql
|
|
|
parameters:
|
|
|
p0:
|
|
|
type: text
|
|
|
name: i_table
|
|
|
p1:
|
|
|
type: text
|
|
|
name: i_option
|
|
|
src: |
|
|
|
DECLARE
|
|
|
_TABLE text;
|
|
|
_VIEWTYPE text;
|
|
|
_DG_SETCOLUMNS text;
|
|
|
_DG_MAXCOLUMNS text;
|
|
|
|
|
|
BEGIN
|
|
|
_TABLE = i_table;
|
|
|
IF _TABLE = '' THEN
|
|
|
_TABLE = 'w_table';
|
|
|
END IF
|
|
|
;
|
|
|
|
|
|
-- DEBUG
|
|
|
EXECUTE('DROP TABLE IF EXISTS temp.debug_w_table; CREATE TABLE temp.debug_w_table AS SELECT * FROM ' || _TABLE || ';');
|
|
|
EXECUTE('DROP TABLE IF EXISTS temp.debug_cti_get_columns_from_indicateurs_properties; CREATE TABLE temp.debug_cti_get_columns_from_indicateurs_properties AS SELECT * FROM cti_get_columns_from_indicateurs_properties;');
|
|
|
|
|
|
|
|
|
_VIEWTYPE =
|
|
|
(
|
|
|
SELECT COALESCE(MAX(property_value),'')
|
|
|
FROM cti_get_columns_from_indicateurs_properties
|
|
|
WHERE property LIKE 'IN_VIEWTYPE'
|
|
|
)
|
|
|
;
|
|
|
|
|
|
_DG_SETCOLUMNS =
|
|
|
(
|
|
|
SELECT COALESCE(MAX(property_value),'')
|
|
|
FROM cti_get_columns_from_indicateurs_properties
|
|
|
WHERE property LIKE 'DG_SETCOLUMNS'
|
|
|
)
|
|
|
;
|
|
|
|
|
|
_DG_MAXCOLUMNS =
|
|
|
(
|
|
|
SELECT COALESCE(array_to_string(base.cti_array_accum(item),','),'MAX(work_indicateurs[1]')
|
|
|
FROM
|
|
|
(
|
|
|
SELECT 'MAX(work_indicateurs['||i::text||'])' AS item
|
|
|
FROM cti_get_columns_from_indicateurs_properties
|
|
|
JOIN generate_series(1,1000) i ON (string_to_array(property_value,',,'))[i] IS NOT NULL OR i = 1
|
|
|
WHERE property = 'DB_COLUMNS'
|
|
|
ORDER BY i
|
|
|
) subview
|
|
|
)
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
-- Regroupement si plusieurs tables analysées
|
|
|
EXECUTE('INSERT INTO ' || _TABLE || ' (
|
|
|
work_table_sequence,
|
|
|
sort,
|
|
|
level,
|
|
|
oidt,
|
|
|
labelt,
|
|
|
textet,
|
|
|
oid1,
|
|
|
code1,
|
|
|
texte1,
|
|
|
oid2,
|
|
|
code2,
|
|
|
texte2,
|
|
|
oid3,
|
|
|
code3,
|
|
|
texte3,
|
|
|
oid,
|
|
|
code,
|
|
|
texte,
|
|
|
other_fields,
|
|
|
significant_data,
|
|
|
indicateurs,
|
|
|
work_indicateurs,
|
|
|
indicateurs_text,
|
|
|
q_special
|
|
|
)
|
|
|
SELECT
|
|
|
''*'',
|
|
|
MAX(sort),
|
|
|
level,
|
|
|
oidt,
|
|
|
MAX(labelt),
|
|
|
MAX(textet),
|
|
|
oid1,
|
|
|
MAX(code1),
|
|
|
MAX(texte1),
|
|
|
oid2,
|
|
|
MAX(code2),
|
|
|
MAX(texte2),
|
|
|
oid3,
|
|
|
MAX(code3),
|
|
|
MAX(texte3),
|
|
|
oid,
|
|
|
MAX(code),
|
|
|
MAX(texte),
|
|
|
MAX(other_fields),
|
|
|
MAX(significant_data),
|
|
|
NULL AS indicateurs,
|
|
|
ARRAY['||_DG_MAXCOLUMNS||'],
|
|
|
indicateurs_text,
|
|
|
''0''::text AS q_special
|
|
|
FROM ' || _TABLE || '
|
|
|
WHERE NOT (oid = -9999999 AND indicateurs[1] IS NULL AND work_indicateurs[1] IS NULL)
|
|
|
GROUP BY level, oidt, oid1, oid2, oid3, oid, indicateurs_text
|
|
|
;
|
|
|
|
|
|
DELETE FROM ' || _TABLE || ' WHERE work_table_sequence <> ''*''
|
|
|
;
|
|
|
|
|
|
ANALYSE ' || _TABLE || '
|
|
|
');
|
|
|
|
|
|
IF _TABLE <> 'w_table' THEN
|
|
|
EXECUTE 'DROP VIEW IF EXISTS w_table CASCADE; CREATE TEMP VIEW w_table AS SELECT * FROM '||_TABLE;
|
|
|
END IF ;
|
|
|
|
|
|
|
|
|
|
|
|
PERFORM base.cti_execute('
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET ' || itemset || '
|
|
|
FROM w_table w_table123
|
|
|
WHERE
|
|
|
w_table123.level = w_table.level AND
|
|
|
w_table123.oid1 = w_table.oid1 AND
|
|
|
w_table123.oid2 = w_table.oid2 AND
|
|
|
w_table123.oid3 = w_table.oid3 AND
|
|
|
w_table123.oidt = -123 AND
|
|
|
w_table.oidt <> -123 AND
|
|
|
('||itemwhere||')
|
|
|
;
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET ' || itemset || '
|
|
|
FROM w_table w_table123
|
|
|
WHERE
|
|
|
w_table123.level = w_table.level AND
|
|
|
w_table123.oid1 = -123 AND
|
|
|
w_table.oid1 <> -123 AND
|
|
|
w_table123.oid2 = w_table.oid2 AND
|
|
|
w_table123.oid3 = w_table.oid3 AND
|
|
|
w_table123.oidt = -123 AND
|
|
|
w_table.oidt <> -123 AND
|
|
|
('||itemwhere||')
|
|
|
;
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET ' || itemset || '
|
|
|
FROM w_table w_table123
|
|
|
WHERE
|
|
|
w_table123.level = w_table.level AND
|
|
|
w_table123.oidt = w_table.oidt AND
|
|
|
w_table123.oid2 = w_table.oid2 AND
|
|
|
w_table123.oid3 = w_table.oid3 AND
|
|
|
w_table123.oid1 = -123 AND
|
|
|
w_table.oid1 <> -123 AND
|
|
|
('||itemwhere||')
|
|
|
;
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET ' || itemset || '
|
|
|
FROM w_table w_table123
|
|
|
WHERE
|
|
|
w_table123.level = w_table.level AND
|
|
|
w_table123.oidt = w_table.oidt AND
|
|
|
w_table123.oid1 = w_table.oid1 AND
|
|
|
w_table123.oid3 = w_table.oid3 AND
|
|
|
w_table123.oid2 = -123 AND
|
|
|
w_table.oid2 <> -123 AND
|
|
|
('||itemwhere||')
|
|
|
;
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET ' || itemset || '
|
|
|
FROM w_table w_table123
|
|
|
WHERE
|
|
|
w_table123.level = w_table.level AND
|
|
|
w_table123.oidt = w_table.oidt AND
|
|
|
w_table123.oid1 = w_table.oid1 AND
|
|
|
w_table123.oid2 = w_table.oid2 AND
|
|
|
w_table123.oid3 = -123 AND
|
|
|
w_table.oid3 <> -123 AND
|
|
|
('||itemwhere||')
|
|
|
;
|
|
|
',1)
|
|
|
FROM
|
|
|
(
|
|
|
SELECT array_to_string(base.cti_array_accum(itemset),',') AS itemset,
|
|
|
array_to_string(base.cti_array_accum(itemwhere),' OR ') AS itemwhere
|
|
|
FROM
|
|
|
(SELECT
|
|
|
'work_indicateurs['||i||'] = CASE WHEN w_table123.work_indicateurs['||i||'] <> 0 THEN w_table123.work_indicateurs['||i||'] ELSE w_table.work_indicateurs['||i||'] END' AS itemset,
|
|
|
'w_table123.work_indicateurs['||i||'] <> 0' AS itemwhere
|
|
|
FROM cti_get_columns_from_indicateurs_properties
|
|
|
JOIN generate_series(1,1000) i ON (string_to_array(property_value,',,'))[i] IS NOT NULL OR i = 1
|
|
|
WHERE property = 'DB_COLUMNS'
|
|
|
ORDER BY i
|
|
|
) subview
|
|
|
) subview
|
|
|
;
|
|
|
EXECUTE('
|
|
|
DELETE FROM ' || _TABLE || ' w_table
|
|
|
WHERE
|
|
|
(
|
|
|
w_table.oidt = -123 OR
|
|
|
w_table.oid1 = -123 OR
|
|
|
w_table.oid2 = -123 OR
|
|
|
w_table.oid2 = -123
|
|
|
)
|
|
|
;')
|
|
|
;
|
|
|
|
|
|
|
|
|
IF _DG_SETCOLUMNS <> '' THEN
|
|
|
EXECUTE '
|
|
|
DROP TABLE IF EXISTS w_tablet
|
|
|
;
|
|
|
CREATE TEMP TABLE w_tablet AS SELECT MAX(work_indicateurs) AS work_indicateurs FROM ' || _TABLE || ' w_table WHERE w_table.level = 9 AND w_table.oid = -9999999
|
|
|
;
|
|
|
|
|
|
UPDATE ' || _TABLE || ' w_table
|
|
|
SET '||_DG_SETCOLUMNS||'
|
|
|
FROM w_tablet'
|
|
|
;
|
|
|
END IF;
|
|
|
|
|
|
-- Si comparaison, différenes et pourcentages
|
|
|
IF _VIEWTYPE = 'COMP' THEN
|
|
|
EXECUTE '
|
|
|
UPDATE ' || _TABLE || ' SET
|
|
|
indicateurs[009]=indicateurs[001]-indicateurs[002],
|
|
|
indicateurs[010]=indicateurs[002]-indicateurs[003],
|
|
|
indicateurs[011]=indicateurs[003]-indicateurs[004],
|
|
|
indicateurs[012]=indicateurs[005]-indicateurs[006],
|
|
|
indicateurs[013]=indicateurs[006]-indicateurs[007],
|
|
|
indicateurs[014]=indicateurs[007]-indicateurs[008],
|
|
|
indicateurs[015]=base.cti_division(indicateurs[001]-indicateurs[002],indicateurs[002])*100,
|
|
|
indicateurs[016]=base.cti_division(indicateurs[002]-indicateurs[003],indicateurs[003])*100,
|
|
|
indicateurs[017]=base.cti_division(indicateurs[003]-indicateurs[004],indicateurs[004])*100,
|
|
|
indicateurs[018]=base.cti_division(indicateurs[005]-indicateurs[006],indicateurs[006])*100,
|
|
|
indicateurs[019]=base.cti_division(indicateurs[006]-indicateurs[007],indicateurs[007])*100,
|
|
|
indicateurs[020]=base.cti_division(indicateurs[007]-indicateurs[008],indicateurs[008])*100,
|
|
|
|
|
|
indicateurs[029]=indicateurs[021]-indicateurs[022],
|
|
|
indicateurs[030]=indicateurs[022]-indicateurs[023],
|
|
|
indicateurs[031]=indicateurs[023]-indicateurs[024],
|
|
|
indicateurs[032]=indicateurs[025]-indicateurs[026],
|
|
|
indicateurs[033]=indicateurs[026]-indicateurs[027],
|
|
|
indicateurs[034]=indicateurs[027]-indicateurs[028],
|
|
|
indicateurs[035]=base.cti_division(indicateurs[021]-indicateurs[022],indicateurs[022])*100,
|
|
|
indicateurs[036]=base.cti_division(indicateurs[022]-indicateurs[023],indicateurs[023])*100,
|
|
|
indicateurs[037]=base.cti_division(indicateurs[023]-indicateurs[024],indicateurs[024])*100,
|
|
|
indicateurs[038]=base.cti_division(indicateurs[025]-indicateurs[026],indicateurs[026])*100,
|
|
|
indicateurs[039]=base.cti_division(indicateurs[026]-indicateurs[027],indicateurs[027])*100,
|
|
|
indicateurs[040]=base.cti_division(indicateurs[027]-indicateurs[028],indicateurs[028])*100,
|
|
|
|
|
|
indicateurs[049]=indicateurs[041]-indicateurs[042],
|
|
|
indicateurs[050]=indicateurs[042]-indicateurs[043],
|
|
|
indicateurs[051]=indicateurs[043]-indicateurs[044],
|
|
|
indicateurs[052]=indicateurs[045]-indicateurs[046],
|
|
|
indicateurs[053]=indicateurs[046]-indicateurs[047],
|
|
|
indicateurs[054]=indicateurs[047]-indicateurs[048],
|
|
|
indicateurs[055]=base.cti_division(indicateurs[041]-indicateurs[042],indicateurs[042])*100,
|
|
|
indicateurs[056]=base.cti_division(indicateurs[042]-indicateurs[043],indicateurs[043])*100,
|
|
|
indicateurs[057]=base.cti_division(indicateurs[043]-indicateurs[044],indicateurs[044])*100,
|
|
|
indicateurs[058]=base.cti_division(indicateurs[045]-indicateurs[046],indicateurs[046])*100,
|
|
|
indicateurs[059]=base.cti_division(indicateurs[046]-indicateurs[047],indicateurs[047])*100,
|
|
|
indicateurs[060]=base.cti_division(indicateurs[047]-indicateurs[048],indicateurs[048])*100,
|
|
|
|
|
|
indicateurs[069]=indicateurs[061]-indicateurs[062],
|
|
|
indicateurs[070]=indicateurs[062]-indicateurs[063],
|
|
|
indicateurs[071]=indicateurs[063]-indicateurs[064],
|
|
|
indicateurs[072]=indicateurs[065]-indicateurs[066],
|
|
|
indicateurs[073]=indicateurs[066]-indicateurs[067],
|
|
|
indicateurs[074]=indicateurs[067]-indicateurs[068],
|
|
|
indicateurs[075]=base.cti_division(indicateurs[061]-indicateurs[062],indicateurs[062])*100,
|
|
|
indicateurs[076]=base.cti_division(indicateurs[062]-indicateurs[063],indicateurs[063])*100,
|
|
|
indicateurs[077]=base.cti_division(indicateurs[063]-indicateurs[064],indicateurs[064])*100,
|
|
|
indicateurs[078]=base.cti_division(indicateurs[065]-indicateurs[066],indicateurs[066])*100,
|
|
|
indicateurs[079]=base.cti_division(indicateurs[066]-indicateurs[067],indicateurs[067])*100,
|
|
|
indicateurs[080]=base.cti_division(indicateurs[067]-indicateurs[068],indicateurs[068])*100,
|
|
|
|
|
|
indicateurs[089]=indicateurs[081]-indicateurs[082],
|
|
|
indicateurs[090]=indicateurs[082]-indicateurs[083],
|
|
|
indicateurs[091]=indicateurs[083]-indicateurs[084],
|
|
|
indicateurs[092]=indicateurs[085]-indicateurs[086],
|
|
|
indicateurs[093]=indicateurs[086]-indicateurs[087],
|
|
|
indicateurs[094]=indicateurs[087]-indicateurs[088],
|
|
|
indicateurs[095]=base.cti_division(indicateurs[081]-indicateurs[082],indicateurs[082])*100,
|
|
|
indicateurs[096]=base.cti_division(indicateurs[082]-indicateurs[083],indicateurs[083])*100,
|
|
|
indicateurs[097]=base.cti_division(indicateurs[083]-indicateurs[084],indicateurs[084])*100,
|
|
|
indicateurs[098]=base.cti_division(indicateurs[085]-indicateurs[086],indicateurs[086])*100,
|
|
|
indicateurs[099]=base.cti_division(indicateurs[086]-indicateurs[087],indicateurs[087])*100,
|
|
|
indicateurs[100]=base.cti_division(indicateurs[087]-indicateurs[088],indicateurs[088])*100,
|
|
|
|
|
|
indicateurs[109]=indicateurs[101]-indicateurs[102],
|
|
|
indicateurs[110]=indicateurs[102]-indicateurs[103],
|
|
|
indicateurs[111]=indicateurs[103]-indicateurs[104],
|
|
|
indicateurs[112]=indicateurs[105]-indicateurs[106],
|
|
|
indicateurs[113]=indicateurs[106]-indicateurs[107],
|
|
|
indicateurs[114]=indicateurs[107]-indicateurs[108],
|
|
|
indicateurs[115]=base.cti_division(indicateurs[101]-indicateurs[102],indicateurs[102])*100,
|
|
|
indicateurs[116]=base.cti_division(indicateurs[102]-indicateurs[103],indicateurs[103])*100,
|
|
|
indicateurs[117]=base.cti_division(indicateurs[103]-indicateurs[104],indicateurs[104])*100,
|
|
|
indicateurs[118]=base.cti_division(indicateurs[105]-indicateurs[106],indicateurs[106])*100,
|
|
|
indicateurs[119]=base.cti_division(indicateurs[106]-indicateurs[107],indicateurs[107])*100,
|
|
|
indicateurs[120]=base.cti_division(indicateurs[107]-indicateurs[108],indicateurs[108])*100,
|
|
|
|
|
|
indicateurs[129]=indicateurs[121]-indicateurs[122],
|
|
|
indicateurs[130]=indicateurs[122]-indicateurs[123],
|
|
|
indicateurs[131]=indicateurs[123]-indicateurs[124],
|
|
|
indicateurs[132]=indicateurs[125]-indicateurs[126],
|
|
|
indicateurs[133]=indicateurs[126]-indicateurs[127],
|
|
|
indicateurs[134]=indicateurs[127]-indicateurs[128],
|
|
|
indicateurs[135]=base.cti_division(indicateurs[121]-indicateurs[122],indicateurs[122])*100,
|
|
|
indicateurs[136]=base.cti_division(indicateurs[122]-indicateurs[123],indicateurs[123])*100,
|
|
|
indicateurs[137]=base.cti_division(indicateurs[123]-indicateurs[124],indicateurs[124])*100,
|
|
|
indicateurs[138]=base.cti_division(indicateurs[125]-indicateurs[126],indicateurs[126])*100,
|
|
|
indicateurs[139]=base.cti_division(indicateurs[126]-indicateurs[127],indicateurs[127])*100,
|
|
|
indicateurs[140]=base.cti_division(indicateurs[127]-indicateurs[128],indicateurs[128])*100,
|
|
|
|
|
|
indicateurs[149]=indicateurs[141]-indicateurs[142],
|
|
|
indicateurs[150]=indicateurs[142]-indicateurs[143],
|
|
|
indicateurs[151]=indicateurs[143]-indicateurs[144],
|
|
|
indicateurs[152]=indicateurs[145]-indicateurs[146],
|
|
|
indicateurs[153]=indicateurs[146]-indicateurs[147],
|
|
|
indicateurs[154]=indicateurs[147]-indicateurs[148],
|
|
|
indicateurs[155]=base.cti_division(indicateurs[141]-indicateurs[142],indicateurs[142])*100,
|
|
|
indicateurs[156]=base.cti_division(indicateurs[142]-indicateurs[143],indicateurs[143])*100,
|
|
|
indicateurs[157]=base.cti_division(indicateurs[143]-indicateurs[144],indicateurs[144])*100,
|
|
|
indicateurs[158]=base.cti_division(indicateurs[145]-indicateurs[146],indicateurs[146])*100,
|
|
|
indicateurs[159]=base.cti_division(indicateurs[146]-indicateurs[147],indicateurs[147])*100,
|
|
|
indicateurs[160]=base.cti_division(indicateurs[147]-indicateurs[148],indicateurs[148])*100,
|
|
|
|
|
|
indicateurs[169]=indicateurs[161]-indicateurs[162],
|
|
|
indicateurs[170]=indicateurs[162]-indicateurs[163],
|
|
|
indicateurs[171]=indicateurs[163]-indicateurs[164],
|
|
|
indicateurs[172]=indicateurs[165]-indicateurs[166],
|
|
|
indicateurs[173]=indicateurs[166]-indicateurs[167],
|
|
|
indicateurs[174]=indicateurs[167]-indicateurs[168],
|
|
|
indicateurs[175]=base.cti_division(indicateurs[161]-indicateurs[162],indicateurs[162])*100,
|
|
|
indicateurs[176]=base.cti_division(indicateurs[162]-indicateurs[163],indicateurs[163])*100,
|
|
|
indicateurs[177]=base.cti_division(indicateurs[163]-indicateurs[164],indicateurs[164])*100,
|
|
|
indicateurs[178]=base.cti_division(indicateurs[165]-indicateurs[166],indicateurs[166])*100,
|
|
|
indicateurs[179]=base.cti_division(indicateurs[166]-indicateurs[167],indicateurs[167])*100,
|
|
|
indicateurs[180]=base.cti_division(indicateurs[167]-indicateurs[168],indicateurs[168])*100,
|
|
|
|
|
|
indicateurs[189]=indicateurs[181]-indicateurs[182],
|
|
|
indicateurs[190]=indicateurs[182]-indicateurs[183],
|
|
|
indicateurs[191]=indicateurs[183]-indicateurs[184],
|
|
|
indicateurs[192]=indicateurs[185]-indicateurs[186],
|
|
|
indicateurs[193]=indicateurs[186]-indicateurs[187],
|
|
|
indicateurs[194]=indicateurs[187]-indicateurs[188],
|
|
|
indicateurs[195]=base.cti_division(indicateurs[181]-indicateurs[182],indicateurs[182])*100,
|
|
|
indicateurs[196]=base.cti_division(indicateurs[182]-indicateurs[183],indicateurs[183])*100,
|
|
|
indicateurs[197]=base.cti_division(indicateurs[183]-indicateurs[184],indicateurs[184])*100,
|
|
|
indicateurs[198]=base.cti_division(indicateurs[185]-indicateurs[186],indicateurs[186])*100,
|
|
|
indicateurs[199]=base.cti_division(indicateurs[186]-indicateurs[187],indicateurs[187])*100,
|
|
|
indicateurs[200]=base.cti_division(indicateurs[187]-indicateurs[188],indicateurs[188])*100,
|
|
|
|
|
|
indicateurs[209]=indicateurs[201]-indicateurs[202],
|
|
|
indicateurs[210]=indicateurs[202]-indicateurs[203],
|
|
|
indicateurs[211]=indicateurs[203]-indicateurs[204],
|
|
|
indicateurs[212]=indicateurs[205]-indicateurs[206],
|
|
|
indicateurs[213]=indicateurs[206]-indicateurs[207],
|
|
|
indicateurs[214]=indicateurs[207]-indicateurs[208],
|
|
|
indicateurs[215]=base.cti_division(indicateurs[201]-indicateurs[202],indicateurs[202])*100,
|
|
|
indicateurs[216]=base.cti_division(indicateurs[202]-indicateurs[203],indicateurs[203])*100,
|
|
|
indicateurs[217]=base.cti_division(indicateurs[203]-indicateurs[204],indicateurs[204])*100,
|
|
|
indicateurs[218]=base.cti_division(indicateurs[205]-indicateurs[206],indicateurs[206])*100,
|
|
|
indicateurs[219]=base.cti_division(indicateurs[206]-indicateurs[207],indicateurs[207])*100,
|
|
|
indicateurs[220]=base.cti_division(indicateurs[207]-indicateurs[208],indicateurs[208])*100,
|
|
|
|
|
|
indicateurs[229]=indicateurs[221]-indicateurs[222],
|
|
|
indicateurs[230]=indicateurs[222]-indicateurs[223],
|
|
|
indicateurs[231]=indicateurs[223]-indicateurs[224],
|
|
|
indicateurs[232]=indicateurs[225]-indicateurs[226],
|
|
|
indicateurs[233]=indicateurs[226]-indicateurs[227],
|
|
|
indicateurs[234]=indicateurs[227]-indicateurs[228],
|
|
|
indicateurs[235]=base.cti_division(indicateurs[221]-indicateurs[222],indicateurs[222])*100,
|
|
|
indicateurs[236]=base.cti_division(indicateurs[222]-indicateurs[223],indicateurs[223])*100,
|
|
|
indicateurs[237]=base.cti_division(indicateurs[223]-indicateurs[224],indicateurs[224])*100,
|
|
|
indicateurs[238]=base.cti_division(indicateurs[225]-indicateurs[226],indicateurs[226])*100,
|
|
|
indicateurs[239]=base.cti_division(indicateurs[226]-indicateurs[227],indicateurs[227])*100,
|
|
|
indicateurs[240]=base.cti_division(indicateurs[227]-indicateurs[228],indicateurs[228])*100,
|
|
|
|
|
|
indicateurs[249]=indicateurs[241]-indicateurs[242],
|
|
|
indicateurs[250]=indicateurs[242]-indicateurs[243],
|
|
|
indicateurs[251]=indicateurs[243]-indicateurs[244],
|
|
|
indicateurs[252]=indicateurs[245]-indicateurs[246],
|
|
|
indicateurs[253]=indicateurs[246]-indicateurs[247],
|
|
|
indicateurs[254]=indicateurs[247]-indicateurs[248],
|
|
|
indicateurs[255]=base.cti_division(indicateurs[241]-indicateurs[242],indicateurs[242])*100,
|
|
|
indicateurs[256]=base.cti_division(indicateurs[242]-indicateurs[243],indicateurs[243])*100,
|
|
|
indicateurs[257]=base.cti_division(indicateurs[243]-indicateurs[244],indicateurs[244])*100,
|
|
|
indicateurs[258]=base.cti_division(indicateurs[245]-indicateurs[246],indicateurs[246])*100,
|
|
|
indicateurs[259]=base.cti_division(indicateurs[246]-indicateurs[247],indicateurs[247])*100,
|
|
|
indicateurs[260]=base.cti_division(indicateurs[247]-indicateurs[248],indicateurs[248])*100,
|
|
|
|
|
|
indicateurs[269]=indicateurs[261]-indicateurs[262],
|
|
|
indicateurs[270]=indicateurs[262]-indicateurs[263],
|
|
|
indicateurs[271]=indicateurs[263]-indicateurs[264],
|
|
|
indicateurs[272]=indicateurs[265]-indicateurs[266],
|
|
|
indicateurs[273]=indicateurs[266]-indicateurs[267],
|
|
|
indicateurs[274]=indicateurs[267]-indicateurs[268],
|
|
|
indicateurs[275]=base.cti_division(indicateurs[261]-indicateurs[262],indicateurs[262])*100,
|
|
|
indicateurs[276]=base.cti_division(indicateurs[262]-indicateurs[263],indicateurs[263])*100,
|
|
|
indicateurs[277]=base.cti_division(indicateurs[263]-indicateurs[264],indicateurs[264])*100,
|
|
|
indicateurs[278]=base.cti_division(indicateurs[265]-indicateurs[266],indicateurs[266])*100,
|
|
|
indicateurs[279]=base.cti_division(indicateurs[266]-indicateurs[267],indicateurs[267])*100,
|
|
|
indicateurs[280]=base.cti_division(indicateurs[267]-indicateurs[268],indicateurs[268])*100,
|
|
|
|
|
|
indicateurs[289]=indicateurs[281]-indicateurs[282],
|
|
|
indicateurs[290]=indicateurs[282]-indicateurs[283],
|
|
|
indicateurs[291]=indicateurs[283]-indicateurs[284],
|
|
|
indicateurs[292]=indicateurs[285]-indicateurs[286],
|
|
|
indicateurs[293]=indicateurs[286]-indicateurs[287],
|
|
|
indicateurs[294]=indicateurs[287]-indicateurs[288],
|
|
|
indicateurs[295]=base.cti_division(indicateurs[281]-indicateurs[282],indicateurs[282])*100,
|
|
|
indicateurs[296]=base.cti_division(indicateurs[282]-indicateurs[283],indicateurs[283])*100,
|
|
|
indicateurs[297]=base.cti_division(indicateurs[283]-indicateurs[284],indicateurs[284])*100,
|
|
|
indicateurs[298]=base.cti_division(indicateurs[285]-indicateurs[286],indicateurs[286])*100,
|
|
|
indicateurs[299]=base.cti_division(indicateurs[286]-indicateurs[287],indicateurs[287])*100,
|
|
|
indicateurs[300]=base.cti_division(indicateurs[287]-indicateurs[288],indicateurs[288])*100
|
|
|
'
|
|
|
;
|
|
|
END IF;
|
|
|
|
|
|
|
|
|
-- Si evolution comparative, transformation des colonnes en lignes d'indicateurs
|
|
|
IF _VIEWTYPE = 'EVOLCOMP' THEN
|
|
|
EXECUTE('
|
|
|
DROP TABLE IF EXISTS w_evolcomp_indicateurs
|
|
|
;
|
|
|
CREATE TEMP TABLE w_evolcomp_indicateurs AS
|
|
|
SELECT property, property_value, substr(property,9,3)::integer AS indicateur_num, (substr(property,9,3)::integer-1)*20 AS indicateur_index
|
|
|
FROM cti_get_columns_from_indicateurs_properties
|
|
|
WHERE property LIKE ''DG\_LHEAD%''
|
|
|
;
|
|
|
|
|
|
UPDATE w_table SET
|
|
|
level = 2,
|
|
|
oidt = oid2,
|
|
|
textet = texte2,
|
|
|
labelt = texte2,
|
|
|
oid1 = oid2,
|
|
|
code1 = code2,
|
|
|
texte1 = texte2,
|
|
|
oid2 = oid1,
|
|
|
code2 = code1,
|
|
|
texte2 = texte1,
|
|
|
oid3 = oid1,
|
|
|
code3 = code1,
|
|
|
texte3 = texte1 ,
|
|
|
oid = oid1,
|
|
|
code = code1,
|
|
|
texte = texte1
|
|
|
;
|
|
|
|
|
|
DROP TABLE IF EXISTS w_table_evolcomp
|
|
|
;
|
|
|
CREATE TEMP TABLE w_table_evolcomp AS
|
|
|
SELECT
|
|
|
w_table.work_table_sequence,
|
|
|
0::bigint AS sort,
|
|
|
w_table.level,
|
|
|
CASE WHEN w_table.oidt = -9999999 THEN 1 ELSE w_table.oidt END AS oidt,
|
|
|
CASE WHEN w_table.oidt = -9999999 THEN '' Synthèse'' ELSE w_table.labelt END AS labelt,
|
|
|
CASE WHEN w_table.oidt = -9999999 THEN ''Synthèse'' ELSE w_table.textet END,
|
|
|
w_table.oid1 ,
|
|
|
w_table.code1,
|
|
|
w_table.texte1,
|
|
|
indicateur_num AS oid2 ,
|
|
|
to_char(indicateur_num,''FM000'') AS code2,
|
|
|
property_value AS texte2,
|
|
|
w_table.oid3,
|
|
|
w_table.code3,
|
|
|
w_table.texte3,
|
|
|
w_table.oid ,
|
|
|
w_table.code,
|
|
|
w_table.texte,
|
|
|
w_table.other_fields,
|
|
|
w_table.significant_data,
|
|
|
CASE WHEN w_table.level = 2 THEN
|
|
|
Array[
|
|
|
indicateurs[indicateur_index+01],
|
|
|
indicateurs[indicateur_index+02],
|
|
|
indicateurs[indicateur_index+03],
|
|
|
indicateurs[indicateur_index+04],
|
|
|
indicateurs[indicateur_index+05],
|
|
|
indicateurs[indicateur_index+06],
|
|
|
indicateurs[indicateur_index+07],
|
|
|
indicateurs[indicateur_index+08],
|
|
|
indicateurs[indicateur_index+09],
|
|
|
indicateurs[indicateur_index+10],
|
|
|
indicateurs[indicateur_index+11],
|
|
|
indicateurs[indicateur_index+12],
|
|
|
indicateurs[indicateur_index+13],
|
|
|
indicateurs[indicateur_index+14],
|
|
|
indicateurs[indicateur_index+15],
|
|
|
indicateurs[indicateur_index+16],
|
|
|
indicateurs[indicateur_index+17],
|
|
|
indicateurs[indicateur_index+18],
|
|
|
indicateurs[indicateur_index+19],
|
|
|
indicateurs[indicateur_index+20]
|
|
|
] ELSE NULL END AS indicateurs,
|
|
|
w_table.work_indicateurs,
|
|
|
w_table.indicateurs_text,
|
|
|
w_table.q_special
|
|
|
FROM w_table
|
|
|
JOIN w_evolcomp_indicateurs ON 1=1
|
|
|
WHERE w_table.oid <> -9999999
|
|
|
;
|
|
|
|
|
|
DROP TABLE IF EXISTS w_table_evolcomp_compare
|
|
|
;
|
|
|
CREATE TEMP TABLE w_table_evolcomp_compare AS
|
|
|
SELECT row_number() OVER (PARTITION BY oidt, oid1, oid2 ORDER BY code) AS n,
|
|
|
oidt||''-''||oid1||''-''||oid2 AS indicateur_code,
|
|
|
NULL::numeric[] AS indicateurs_p,
|
|
|
''''::text AS code_p,
|
|
|
*
|
|
|
FROM w_table_evolcomp
|
|
|
WHERE level = 2
|
|
|
;
|
|
|
UPDATE w_table_evolcomp_compare SET
|
|
|
code_p = w_table_evolcomp_compare_p.code,
|
|
|
indicateurs_p = ARRAY[
|
|
|
w_table_evolcomp_compare_p.indicateurs[01],
|
|
|
w_table_evolcomp_compare_p.indicateurs[02],
|
|
|
w_table_evolcomp_compare_p.indicateurs[03],
|
|
|
w_table_evolcomp_compare_p.indicateurs[04],
|
|
|
w_table_evolcomp_compare_p.indicateurs[05],
|
|
|
w_table_evolcomp_compare_p.indicateurs[06],
|
|
|
w_table_evolcomp_compare_p.indicateurs[07],
|
|
|
w_table_evolcomp_compare_p.indicateurs[08],
|
|
|
w_table_evolcomp_compare_p.indicateurs[09],
|
|
|
w_table_evolcomp_compare_p.indicateurs[10],
|
|
|
w_table_evolcomp_compare_p.indicateurs[11],
|
|
|
w_table_evolcomp_compare_p.indicateurs[12],
|
|
|
w_table_evolcomp_compare_p.indicateurs[13],
|
|
|
w_table_evolcomp_compare_p.indicateurs[14],
|
|
|
w_table_evolcomp_compare_p.indicateurs[15],
|
|
|
w_table_evolcomp_compare_p.indicateurs[16],
|
|
|
w_table_evolcomp_compare_p.indicateurs[17],
|
|
|
w_table_evolcomp_compare_p.indicateurs[18],
|
|
|
w_table_evolcomp_compare_p.indicateurs[19],
|
|
|
w_table_evolcomp_compare_p.indicateurs[20]
|
|
|
]
|
|
|
FROM w_table_evolcomp_compare w_table_evolcomp_compare_p
|
|
|
WHERE w_table_evolcomp_compare.indicateur_code = w_table_evolcomp_compare_p.indicateur_code AND
|
|
|
w_table_evolcomp_compare.n = w_table_evolcomp_compare_p.n+1
|
|
|
;
|
|
|
INSERT INTO w_table_evolcomp
|
|
|
SELECT
|
|
|
work_table_sequence,
|
|
|
0::bigint AS sort,
|
|
|
level,
|
|
|
oidt,
|
|
|
labelt,
|
|
|
textet,
|
|
|
oid1,
|
|
|
code1,
|
|
|
texte1,
|
|
|
oid2,
|
|
|
code2,
|
|
|
texte2,
|
|
|
oid3,
|
|
|
code3 || ''E'',
|
|
|
texte3,
|
|
|
oid,
|
|
|
code || ''E'',
|
|
|
''Evolution ''||code||''-''||code_p,
|
|
|
other_fields,
|
|
|
significant_data,
|
|
|
CASE WHEN level = 2 THEN
|
|
|
Array[
|
|
|
indicateurs[01]-indicateurs_p[01],
|
|
|
indicateurs[02]-indicateurs_p[02],
|
|
|
indicateurs[03]-indicateurs_p[03],
|
|
|
indicateurs[04]-indicateurs_p[04],
|
|
|
indicateurs[05]-indicateurs_p[05],
|
|
|
indicateurs[06]-indicateurs_p[06],
|
|
|
indicateurs[07]-indicateurs_p[07],
|
|
|
indicateurs[08]-indicateurs_p[08],
|
|
|
indicateurs[09]-indicateurs_p[09],
|
|
|
indicateurs[10]-indicateurs_p[10],
|
|
|
indicateurs[11]-indicateurs_p[11],
|
|
|
indicateurs[12]-indicateurs_p[12],
|
|
|
indicateurs[13]-indicateurs_p[13],
|
|
|
indicateurs[14]-indicateurs_p[14],
|
|
|
indicateurs[15]-indicateurs_p[15],
|
|
|
indicateurs[16]-indicateurs_p[16],
|
|
|
indicateurs[17]-indicateurs_p[17],
|
|
|
indicateurs[18]-indicateurs_p[18],
|
|
|
indicateurs[19]-indicateurs_p[19],
|
|
|
indicateurs[20]-indicateurs_p[20]
|
|
|
] ELSE NULL END AS indicateurs,
|
|
|
work_indicateurs,
|
|
|
indicateurs_text,
|
|
|
q_special
|
|
|
FROM w_table_evolcomp_compare
|
|
|
WHERE n > 1
|
|
|
;
|
|
|
INSERT INTO w_table_evolcomp
|
|
|
SELECT
|
|
|
work_table_sequence,
|
|
|
0::bigint AS sort,
|
|
|
level,
|
|
|
oidt,
|
|
|
labelt,
|
|
|
textet,
|
|
|
oid1,
|
|
|
code1,
|
|
|
texte1,
|
|
|
oid2,
|
|
|
code2,
|
|
|
texte2,
|
|
|
oid3,
|
|
|
code3 || ''P'',
|
|
|
texte3,
|
|
|
oid,
|
|
|
code || ''P'',
|
|
|
''% Evolution ''||code||''-''||code_p,
|
|
|
other_fields,
|
|
|
significant_data,
|
|
|
CASE WHEN level = 2 THEN
|
|
|
Array[
|
|
|
base.cti_division(indicateurs[01]-indicateurs_p[01],indicateurs_p[01])*100,
|
|
|
base.cti_division(indicateurs[02]-indicateurs_p[02],indicateurs_p[02])*100,
|
|
|
base.cti_division(indicateurs[03]-indicateurs_p[03],indicateurs_p[03])*100,
|
|
|
base.cti_division(indicateurs[04]-indicateurs_p[04],indicateurs_p[04])*100,
|
|
|
base.cti_division(indicateurs[05]-indicateurs_p[05],indicateurs_p[05])*100,
|
|
|
base.cti_division(indicateurs[06]-indicateurs_p[06],indicateurs_p[06])*100,
|
|
|
base.cti_division(indicateurs[07]-indicateurs_p[07],indicateurs_p[07])*100,
|
|
|
base.cti_division(indicateurs[08]-indicateurs_p[08],indicateurs_p[08])*100,
|
|
|
base.cti_division(indicateurs[09]-indicateurs_p[09],indicateurs_p[09])*100,
|
|
|
base.cti_division(indicateurs[10]-indicateurs_p[10],indicateurs_p[10])*100,
|
|
|
base.cti_division(indicateurs[11]-indicateurs_p[11],indicateurs_p[11])*100,
|
|
|
base.cti_division(indicateurs[12]-indicateurs_p[12],indicateurs_p[12])*100,
|
|
|
base.cti_division(indicateurs[13]-indicateurs_p[13],indicateurs_p[13])*100,
|
|
|
base.cti_division(indicateurs[14]-indicateurs_p[14],indicateurs_p[14])*100,
|
|
|
base.cti_division(indicateurs[15]-indicateurs_p[15],indicateurs_p[15])*100,
|
|
|
base.cti_division(indicateurs[16]-indicateurs_p[16],indicateurs_p[16])*100,
|
|
|
base.cti_division(indicateurs[17]-indicateurs_p[17],indicateurs_p[17])*100,
|
|
|
base.cti_division(indicateurs[18]-indicateurs_p[18],indicateurs_p[18])*100,
|
|
|
base.cti_division(indicateurs[19]-indicateurs_p[19],indicateurs_p[19])*100,
|
|
|
base.cti_division(indicateurs[20]-indicateurs_p[20],indicateurs_p[20])*100
|
|
|
] ELSE NULL END AS indicateurs,
|
|
|
work_indicateurs,
|
|
|
indicateurs_text,
|
|
|
q_special
|
|
|
FROM w_table_evolcomp_compare
|
|
|
WHERE n > 1
|
|
|
;
|
|
|
INSERT INTO w_table_evolcomp
|
|
|
SELECT
|
|
|
work_table_sequence,
|
|
|
0::bigint AS sort,
|
|
|
1 AS level,
|
|
|
oidt,
|
|
|
labelt,
|
|
|
textet,
|
|
|
oid1 ,
|
|
|
code1,
|
|
|
texte1,
|
|
|
oid2 ,
|
|
|
code2,
|
|
|
texte2,
|
|
|
-9999999 ,
|
|
|
chr(1),
|
|
|
'''',
|
|
|
oid2 AS oid ,
|
|
|
code2 AS code,
|
|
|
texte2 AS texte,
|
|
|
NULL,
|
|
|
NULL,
|
|
|
NULL AS indicateurs,
|
|
|
NULL AS work_indicateurs,
|
|
|
NULL AS indicateurs_text,
|
|
|
''0'' AS q_special
|
|
|
FROM w_table_evolcomp
|
|
|
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12
|
|
|
;
|
|
|
TRUNCATE w_table
|
|
|
;
|
|
|
INSERT INTO w_table
|
|
|
SELECT * FROM w_table_evolcomp
|
|
|
');
|
|
|
END IF;
|
|
|
|
|
|
UPDATE w_table SET absolute_sum = (SELECT SUM(ABS(s)) FROM UNNEST(indicateurs) s)
|
|
|
;
|
|
|
|
|
|
RETURN 'OK';
|
|
|
|
|
|
|
|
|
END;
|