Vous n'êtes pas identifié(e).
Bonjour à tous,
je ne parviens pas à exécuter une requete avec la commande CROSSTAB, j'ai une erreur :
function crosstab(unknown) does not exist
ERROR: function crosstab(unknown) does not exist
État SQL :42883
Astuce : No function matches the given name and argument types. You might need to add explicit type casts.
Merci de m'accorder un peu de votre temps précieux.
Hors ligne
Bonjour,
Avez-vous installé l'extension "tablefunc" ?
A exécuter avec le superuser dans votre base de données :
CREATE EXTENSION tablefunc;
Cordialement,
Sébastien.
Hors ligne
SVP ! comment l'installer .
Merci pour votre prompt réaction.
Hors ligne
Comme je disais dans mon message précédent :
simple commande sql avec un superuser
CREATE EXTENSION tablefunc;
Cordialement,
Sébastien.
Hors ligne
Merci,
quand j'exécute la requête
select * from pg_available_extensions;
je vois bien tablefunc 1.0 dans la liste, je ne sais pas s'il faut tjrs exécuter CREATE EXTENSION tablefunc; pour que ça marche.
Hors ligne
Merci ça marche, seulement j'ai un dernier souci:
quand je fait cette requete
select * from crosstab
(
'select s.libelle as salle, EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais) as age,
count( EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais)) as fb
from user_individu i
inner join user_annualregistration a on i.idperson = a.ideleve
inner join core_salle s on a.idsalle = s.idsalle
inner join core_serie si on s.idserie = si.idserie
inner join core_niveau n on s.idniveau = n.idniveau
and a.isinscription = true
group by salle ,age
order by salle'
)
AS ct
(
"nombrefg" double precision,"nombre" double precision,"age" integer
);
ça me renvoie l'erreur suivant :
ERROR: invalid return type
DETAIL: SQL rowid datatype does not match return rowid datatype.
********** Erreur **********
ERROR: invalid return type
État SQL :42601
Détail :SQL rowid datatype does not match return rowid datatype.
j'ai tout asayer sans succès
Merci pour votre aide
Hors ligne
A tout hasard : quel est le type de la colonne datenais de la table user_individu ?
Cordialement,
Sébastien.
Hors ligne
la colonne datenais est de type date
Hors ligne
Pour le moment j'ai fais ceci:
select * from crosstab
(
'select s.libelle as salle, EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais) as age,
count( EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais)) as fb
from individu i
inner join user_annualregistration a on i.idperson = a.ideleve
inner join core_salle s on a.idsalle = s.idsalle
inner join core_serie si on s.idserie = si.idserie
inner join core_niveau n on s.idniveau = n.idniveau
and a.isinscription = true
group by salle ,age
order by 1,2',
$$VALUES ('salle'::text), ('Age')$$
)
AS age
(
"salle" text, "Age" integer, "Nombre" integer
);
je n'ai plus d'erreur, mais les colonnes Age et Nombre sont vides pourtant elles contiennent des données si on exécute la requête sans croostab, c'est à dire:
select s.libelle as salle, EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais) as age,
count( EXTRACT(year FROM now()) - EXTRACT(year FROM i.datenais)) as fb
from individu i
inner join user_annualregistration a on i.idperson = a.ideleve
inner join core_salle s on a.idsalle = s.idsalle
inner join core_serie si on s.idserie = si.idserie
inner join core_niveau n on s.idniveau = n.idniveau
and a.isinscription = true
group by salle ,age
order by 1,2
Merci pour votre aide
Hors ligne
Vous mélangez minuscule et majuscule. À mon avis, c'est pour cela que certaines colonnes (celles dont la première lettre est en majuscule) apparaissent NULL. Soyez cohérent, soit tout en minuscule, soit tout en majuscule.
Guillaume.
Hors ligne
Merci,
j'ai mis tout en minuscule, mais jusque là aucun changement
merci pour votre reaction
Hors ligne