PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Général » requete crosstab » 21/08/2015 15:38:08

evaporite
Réponses : 1

Bonjour à tous
Je suis sous 9.4.
J'ai une table voirie avec 3 champs
INSEE (text)    nature (text)     longeur (integre)
1                       A                            5
2                       B                            2
1                       C                            3
1                       A                            6

je voudrais le faire évoluer en
INSEE      TOTAL (sum de longueur),    nature_A          nature_B       nature_C
1                   14                                      11                      0              3
2                    2                                        0                  2                  0

DOnc j'ai pris la fonction crosstab (c'est faire un tableau croisé dynamique de excel )
avec deux requetes  :   crosstab(text source_sql, text category_sql)

SELECT *
     FROM crosstab('
        SELECT INSEE,nature,sum(longeur_ml)
                FROM voirie
                group by INSEE,nature
                order by nature',

         'SELECT nature
                FROM voirie
                group by nature
                order by nature')

Les deux requetes fonctionnent individuellement, c'est pour la suite que j'ai un souci ...

option 1 (ce qui m'arrangerait)
La liste des colonnes seraient variables, les valeurs différentes de "nature" aujourd'hui sont de 44 différentes mais demain ça sera peut être 30 ou 50, donc je souhaiterais que les entetes de champ soit automatiques en fonction des variables du champ nature ...

option 2 je défini les noms de champs
Et comme j'ai pas trouvé comment faire, j'ai fait avec la définition des champs mais ca ne marche pas non plus                
En fait après avoir recommencé ma requete je fais tombé le serveur  ... server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

Pour la suite de la requete voici ce que j'ai préparé
AS
(
"enrobé" numeric(10,2),
"bicouche" numeric(10,2),
"graviers" numeric(10,2),
"sablé" numeric(10,2)
))
et c'est là ou ça fait tombé postgresql ... ma base est trop importante ? J'ai 44 natures différentes ...

Alors si quelqu'un a des conseils, une idée des corrections je suis preneuse, je débute ...

Merci
Aurélie

Pied de page des forums

Propulsé par FluxBB