Vous n'êtes pas identifié(e).
Pages : 1
J'ai crée la fonction suivante (à partir des plusieurs forum) pour une crosstab dynamic, elle marche bien sauf qu'il n'affiche pas toute les données répété, ces données ne sont pas des doublons mais une liste de tableau, pouvez vous m'aider à résoudre ce problème. Ça va aider plusieurs développeur :-)
CREATE OR REPLACE FUNCTION dm.foo()
RETURNS text AS
$BODY$
DECLARE
dynamic_columns varchar;
BEGIN
select array_to_string(array_agg(distinct item_name order by item_name), ' text, ') into dynamic_columns from dm.clinicaldata;
return 'select * from crosstab (
''select Distinct subject_id, item_group_name, item_group_repeat, item_form_order, item_name, item_value from dm.clinicaldata order by 1'',
''select Distinct item_name from dm.clinicaldata order by item_name''
)
as newtable (
subject_id varchar, item_group_name varchar, item_form_order varchar, item_group_repeat int, '|| dynamic_columns ||' text
)';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION dm.foo()
OWNER TO postgres;
--------
CREATE OR REPLACE FUNCTION dm.bar()
RETURNS void AS
$BODY$
DECLARE
dyn_crosstab text;
BEGIN
DROP VIEW IF EXISTS barview;
select dm.foo() into dyn_crosstab;
execute 'create view barview as '||dyn_crosstab;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION dm.bar()
OWNER TO postgres;
select dm.bar();
select * from barview;
Hors ligne
Pages : 1