Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membuat pertanyaan crosstab dalam postgresql menggunakan fungsi `crosstab ()`?
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 bentukcrosstab()
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:
crosstabview
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>
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!