Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membuat pertanyaan crosstab dalam postgresql menggunakan fungsi `crosstab ()`?

Bagaimana untuk membuat pertanyaan crosstab dalam postgresql menggunakan fungsi `crosstab ()`?

Barbara Streisand
Barbara Streisandasal
2025-01-25 11:11:09282semak imbas

Pertanyaan tab silang PostgreSQL: Gunakan fungsi crosstab() untuk mencipta tab silang

Pertanyaan tab silang PostgreSQL boleh mengubah data menjadi format jadual yang lebih mudah dibaca, di mana nilai dikumpulkan mengikut kategori dan baris mewakili nilai atribut yang berbeza. Pertanyaan tab silang boleh dibuat menggunakan fungsi tablefunc dalam modul crosstab().

Kes ujian yang dipertingkatkan

Pertimbangkan borang berikut:

<code>Section    Status    Count
A          Active    1
A          Inactive  2
B          Active    4
B          Inactive  5
C          Inactive  7</code>

Kami ingin membuat pertanyaan tab silang yang mengembalikan jadual berikut:

<code>Section    Active    Inactive
A          1         2
B          4         5
C          NULL         7</code>

Borang Keselamatan

Untuk membuat pertanyaan tab silang ini, anda boleh menggunakan bentuk dua hujah 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>

Borang ini "selamat" kerana ia memastikan setiap atribut ditetapkan pada lajur khususnya, walaupun terdapat baris input yang berlebihan. Dalam contoh ini, nilai daripada Bahagian C diisikan ke dalam lajur Tidak Aktif, tetapi lajur Aktif kekal NULL.

Mengendalikan talian input berlebihan

Kedua-dua bentuk

crosstab() mengendalikan baris tambahan input secara berbeza. Borang hujah tunggal mengisi lajur nilai yang tersedia dari kiri ke kanan, membuang lebihan nilai. Borang dua hujah memberikan setiap nilai input kepada lajur khususnya sendiri, mengatasi sebarang tugasan sebelumnya.

Contoh Terperinci

Pertanyaan silang silang boleh digunakan dalam pelbagai senario lanjutan, seperti:

  • Pivot berbilang lajur
  • Perspektif menggunakan alternatif dinamik seperti CASE dan GROUP BY

crosstabview

dalam psql

PostgreSQL 9.6 memperkenalkan crosstabview arahan meta dalam psql terminal interaktifnya. Ia membolehkan anda menjalankan pertanyaan tab silang dan memaparkan keputusan dalam format jadual.

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

How to Create Crosstab Queries in PostgreSQL Using the `crosstab()` Function?

Atas ialah kandungan terperinci Bagaimana untuk membuat pertanyaan crosstab dalam postgresql menggunakan fungsi `crosstab ()`?. 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