Vous n'êtes pas identifié(e).
Pages : 1
Bon, en fait, j'ai corrigé ma requête mais je ne comprends pas pourquoi.
J'ai fait ma première requête:
select distinct nom from enq_region;
Ca m'a sorti ma liste de région: région_1, region_2, etc...
Puis je fais le cross tab. Et dans le as ct(...) j'ai mis les régions dans l'ordre de sorti de la requête précédente. A savoir region_1, 2, 3, etc... Or, en fait, ça marche si je les mets dans l'ordre inverse: region_5, region_4, region_3, etc...
Je ne sais pas si je suis clair.
Mais je me demande pourquoi. Qu'est ce qui détermine l'ordre des colonnes? Car du coup je dois le connaître pour réaliser mon ct(...), non?
Est-ce qu'il n'est pas possible d'automatiser la chose? Pour l'instant je fais avec 5 régions mais je pourrai aussi le faire pour 4 ou 15.
Ok, merci!
Alors ça marche mais ça ne sort pas ce que j'espérais...
Comme je l'ai dit, suis assez novice. J'ai jamais eu de formation dans ce domaine. J'avais déjà vu la page http://docs.postgresql.fr/9.6/tablefunc.html mais c'est du chinois pour ça
Voici ma requête:
select distinct nom from enq_zone;
SELECT *
FROM crosstab('
SELECT prod,region,count(distinct id_entreprise) as nb
FROM enq_region
group by prod,region
order by prod',
'SELECT region
FROM enq_region
group by region
order by region')
AS ct
(
"Prod" text,
"region_1" bigint,
"region_2" bigint,
"region_3" bigint,
"region_4" bigint,
"region_5" bigint);
Le soucis c'est que cela ne m'associe pas les bonnes régions aux bons décompte (count(distinct id_entreprise))...
Une idée??
Personne ne peut m'éclairer?? Je suis vraiment coincé là...
Effectivement, il me renvoit un bigint mais même si je mets ça
AS ct(prod text, region text, nb bigint);
J'ai ça comme résultat:
ERREUR: return and sql tuple descriptions are incompatible
État SQL :42601
Bonjour
Je me permets de relancer ce post. Je suis comme Tipie, novice et cherchant à faire un tableau croisé, mais pour ma part, j'ai le message d'erreur suivant:
ERREUR: return and sql tuple descriptions are incompatible
État SQL :42601
Apparemment, c'est la définition de "numeric" qui pourrait poser problème.
Pour remettre les choses dans leur contexte, j'ai une table avec des identifiants d'entreprise (id_entreprise), situées dans différentes région (region), produisant différents produits (prod). Je cherche à sortir un tableau avec en ligne les produits, en colonne les régions et dans le tableau le nombre d'entreprise qui produisent les produits en question dans chaque région.
SELECT *
FROM crosstab(
'select prod,region, count(distinct id_entreprise) as nb from enq_region group by prod, region')
AS ct(prod text, region text, nb numeric);
Où est l'erreur??
Pages : 1