Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 27/04/2016 14:39:08
- pljavabruno
- Membre
Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#2 27/04/2016 14:44:39
- ruizsebastien
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#3 27/04/2016 14:55:00
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
SVP ! comment l'installer .
Merci pour votre prompt réaction.
Hors ligne
#4 27/04/2016 15:02:08
- ruizsebastien
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
Comme je disais dans mon message précédent :
simple commande sql avec un superuser
CREATE EXTENSION tablefunc;
Cordialement,
Sébastien.
Hors ligne
#5 27/04/2016 15:06:49
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#6 27/04/2016 16:50:08
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#7 27/04/2016 17:10:52
- ruizsebastien
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
A tout hasard : quel est le type de la colonne datenais de la table user_individu ?
Cordialement,
Sébastien.
Hors ligne
#8 27/04/2016 18:26:40
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
la colonne datenais est de type date
Hors ligne
#9 27/04/2016 18:43:55
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#10 27/04/2016 23:56:26
- gleu
- Administrateur
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
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
#11 28/04/2016 19:13:26
- pljavabruno
- Membre
Re : Activer ou intégrer la commande PIVOT/CROSSTAB dans postgresql 9.4
Merci,
j'ai mis tout en minuscule, mais jusque là aucun changement
merci pour votre reaction
Hors ligne