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
524 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
CREATE EXTENSION IF NOT EXISTS tablefunc;
Copier après la connexion

<表> Tableau de test:

<标> Tableau de croisement cible:

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);
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

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);
Copier après la connexion

<参> Forme de paramètre unique:

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);
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!

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