Maison >base de données >tutoriel mysql >Comment créer des requêtes Crosstab dans PostgreSQL à l'aide de la fonction `crosstab()` ?

Comment créer des requêtes Crosstab dans PostgreSQL à l'aide de la fonction `crosstab()` ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 11:11:09282parcourir

Requête croisée PostgreSQL : utilisez la fonction crosstab() pour créer un tableau croisé

La requête croisée de PostgreSQL peut transformer les données dans un format tabulaire plus lisible, où les valeurs sont regroupées par catégories et les lignes représentent différentes valeurs d'attribut. Les requêtes croisées peuvent être créées à l'aide de la fonction tablefunc du module crosstab().

Cas de test améliorés

Considérez la forme suivante :

<code>Section    Status    Count
A          Active    1
A          Inactive  2
B          Active    4
B          Inactive  5
C          Inactive  7</code>

Nous souhaitons créer une requête croisée qui renvoie le tableau suivant :

<code>Section    Active    Inactive
A          1         2
B          4         5
C          NULL         7</code>

Formulaire de sécurité

Pour créer cette requête croisée, vous pouvez utiliser la forme à deux arguments de crosstab() :

<code class="language-sql">SELECT *
FROM   crosstab(
   'SELECT section, status, ct
    FROM   tbl
    ORDER  BY 1,2'  -- 也可以只写 "ORDER BY 1"

  , $$VALUES ('Active'::text), ('Inactive')$$
   ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>

Ce formulaire est "sûr" car il garantit que chaque attribut est attribué à sa colonne dédiée, même s'il y a des lignes d'entrée redondantes. Dans cet exemple, les valeurs de la section C sont renseignées dans la colonne Inactive, mais la colonne Active reste NULL.

Gestion des lignes d'entrée redondantes

Les deux formes de

crosstab() gèrent différemment les lignes de saisie supplémentaires. Le formulaire à argument unique remplit les colonnes de valeurs disponibles de gauche à droite, en supprimant les valeurs excédentaires. Le formulaire à deux arguments attribue chaque valeur d'entrée à sa propre colonne dédiée, remplaçant toute affectation précédente.

Exemples avancés

Les requêtes croisées peuvent être utilisées dans divers scénarios avancés, tels que :

  • Pivot multi-colonnes
  • Perspective utilisant des alternatives dynamiques telles que CASE et GROUP BY

crosstabview

dans psql

PostgreSQL 9.6 introduit la méta-commande crosstabview dans son terminal interactif psql. Il vous permet d'exécuter des requêtes croisées et d'afficher les résultats sous forme de tableau.

<code class="language-sql">db=> SELECT section, status, ct FROM tbl \crosstabview</code>

How to Create Crosstab Queries in PostgreSQL Using the `crosstab()` Function?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn