Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Pertanyaan Crosstab dalam PostgreSQL menggunakan modul `tablefunc`?

Bagaimana untuk Mencipta Pertanyaan Crosstab dalam PostgreSQL menggunakan modul `tablefunc`?

DDD
DDDasal
2025-01-25 11:16:10495semak imbas

Penjelasan terperinci tentang pertanyaan tab silang PostgreSQL dan tablefuncaplikasi modul

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

Artikel ini akan memperkenalkan secara terperinci cara menggunakan modul tablefunc untuk membuat pertanyaan tab silang dalam PostgreSQL.

Pasang tablefuncmodul

Pertama, anda perlu memasang sambungan tablefunc:

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

Contoh

Borang ujian:

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

Tab silang sasaran:

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

crosstabFungsi

Borang parameter tunggal (terhad):

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

Borang parameter berganda (disyorkan):

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

Kesan input berbilang talian

Borang parameter tunggal:

  • Isi lajur nilai yang tersedia dari kiri ke kanan.
  • Nilai berlebihan akan dibuang.
  • Baris input yang lebih lama diutamakan.

Borang parameter berganda:

  • Tetapkan setiap nilai input pada lajur khususnya.
  • Tulis ganti mana-mana tugasan sebelumnya.
  • Baris input kemudian diutamakan.

Contoh Terperinci

crosstabview

dalam psql

PostgreSQL 9.6 memperkenalkan meta-perintah ini dalam psql:

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

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pertanyaan Crosstab dalam PostgreSQL menggunakan modul `tablefunc`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn