Maison > base de données > tutoriel mysql > Comment créer des requêtes Crosstab dans PostgreSQL à l'aide du module `tablefunc` ?

Comment créer des requêtes Crosstab dans PostgreSQL à l'aide du module `tablefunc` ?

DDD
Libérer: 2025-01-25 11:16:10
original
468 Les gens l'ont consulté

Postgresql Cross-Table Query Explication détaillée et tablefunc Application du module

How to Create Crosstab Queries in PostgreSQL using the `tablefunc` module?

Cet article présentera comment utiliser le module

pour créer une table transversale dans Query dans PostgreSQL. tablefunc

Installer

module tablefunc Tout d'abord, vous devez installer

Extension:

tablefunc

Exemple
<code class="language-sql">CREATE EXTENSION IF NOT EXISTS tablefunc;</code>
Copier après la connexion

Tableau de test:

Tableau de croisement cible:

<code class="language-sql">CREATE TABLE tbl (
   section   text,
   status    text,
   ct        integer
);

INSERT INTO tbl VALUES 
  ('A', 'Active', 1), ('A', 'Inactive', 2),
  ('B', 'Active', 4), ('B', 'Inactive', 5),
  ('C', 'Inactive', 7);</code>
Copier après la connexion

fonction

<code>Section | Active | Inactive
---------+--------+----------
A       |      1 |        2
B       |      4 |        5
C       |        |        7</code>
Copier après la connexion
Forme de paramètre unique (Limited):

crosstab Formulaire du paramètre double (recommandation):

L'influence de plusieurs lignes d'entrée

<code class="language-sql">SELECT *
FROM   crosstab(
   'SELECT section, status, ct
    FROM   tbl
    ORDER  BY 1,2'  -- 必须为 "ORDER BY 1,2"
   ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>
Copier après la connexion

Forme de paramètre unique:

<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>
Copier après la connexion
La disponibilité du remplissage de gauche à droite.

La valeur excessive sera rejetée.

Les banques d'entrée antérieures sont préférées.

Formulaire à double paramètre:

  • Chaque valeur d'entrée est allouée à sa colonne dédiée.
  • Couvrir toute affectation précédente.
  • Les banques d'entrée tardives sont préférées.

Exemples avancés

  • Utilisez TableFunc pour effectuer plusieurs colonnes de perspective
  • Perspective dynamique Alternative à l'utilisation de cas et de groupe par

  • PostgreSQL 9.6 a introduit cette commande d'élément dans PSQL:

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal