Maison >base de données >tutoriel mysql >Comment créer des requêtes Crosstab dans PostgreSQL à l'aide de la fonction `crosstab()` ?
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 decrosstab()
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 :
crosstabview
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>
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!