Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich Kreuztabellenabfragen in PostgreSQL mit dem Modul „tablefunc'?

Wie erstelle ich Kreuztabellenabfragen in PostgreSQL mit dem Modul „tablefunc'?

DDD
Freigeben: 2025-01-25 11:16:10
Original
468 Leute haben es durchsucht

Detaillierte Erläuterung der PostgreSQL-Kreuztabellenabfrage und der tablefuncModulanwendung

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

In diesem Artikel wird detailliert beschrieben, wie Sie mit dem tablefunc-Modul eine Kreuztabellenabfrage in PostgreSQL erstellen.

tablefuncModul

installieren

Zuerst müssen Sie die tablefunc-Erweiterung installieren:

<code class="language-sql">CREATE EXTENSION IF NOT EXISTS tablefunc;</code>
Nach dem Login kopieren

Beispiel

Testformular:

<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>
Nach dem Login kopieren

Zielkreuztabelle:

<code>Section | Active | Inactive
---------+--------+----------
A       |      1 |        2
B       |      4 |        5
C       |        |        7</code>
Nach dem Login kopieren

crosstabFunktion

Einzelparameterformular (eingeschränkt):

<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>
Nach dem Login kopieren

Doppelte Parameterform (empfohlen):

<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>
Nach dem Login kopieren

Die Auswirkungen der mehrzeiligen Eingabe

Einzelparameterformular:

  • Füllen Sie die Spalte mit den verfügbaren Werten von links nach rechts aus.
  • Überschüssige Werte werden verworfen.
  • Ältere Eingabezeilen haben Vorrang.

Doppelparameterform:

  • Weisen Sie jeden Eingabewert seiner speziellen Spalte zu.
  • Überschreiben Sie alle vorherigen Aufgaben.
  • Spätere Eingabezeilen haben Vorrang.

Erweiterte Beispiele

crosstabview

in psql

PostgreSQL 9.6 hat diesen Metabefehl in psql eingeführt:

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

Das obige ist der detaillierte Inhalt vonWie erstelle ich Kreuztabellenabfragen in PostgreSQL mit dem Modul „tablefunc'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage