230 votes

Requête croisée PostgreSQL

Quelqu'un sait-il comment créer des tableaux croisés dans PostgreSQL ?
Par exemple, j'ai le tableau suivant :

Section    Status    Count
A          Active    1
A          Inactive  2
B          Active    4
B          Inactive  5

Je voudrais que la requête renvoie le tableau croisé suivant :

Section    Active    Inactive
A          1         2
B          4         5

Est-ce possible ?

1 votes

J'avais une structure légèrement différente et j'ai trouvé cet exemple un peu difficile à comprendre. J'ai donc documenté ma manière de penser à ce sujet stackoverflow.com/q/49051959/808723 . Peut-être que c'est utile pour tout le monde.

-2voto

Lekshmi Kurup Points 1

Crosstab est disponible sous l'onglet tablefunc extension. Vous devrez créer cette extension une fois pour la base de données.

CRÉER UNE EXTENSION tablefunc ;

Vous pouvez utiliser le code ci-dessous pour créer un tableau croisé dynamique en utilisant le cross tab :

create table test_Crosstab( section text,
<br/>status text,
<br/>count numeric)

<br/>insert into test_Crosstab values ( 'A','Active',1)
                <br/>,( 'A','Inactive',2)
                <br/>,( 'B','Active',4)
                <br/>,( 'B','Inactive',5)

select * from crosstab(
<br/>'select section
    <br/>,status
    <br/>,count
    <br/>from test_crosstab'
    <br/>)as ctab ("Section" text,"Active" numeric,"Inactive" numeric)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X