PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

tab silang dengan 2 (atau lebih) nama baris

Gunakan crosstab() dari tablefunc modul tambahan.

Kesulitan khusus di sini adalah bahwa "nama baris" terdiri dari dua kolom. Saya menggabungkan untuk tujuan kueri dan tidak menampilkan kolom gabungan di akhir.
Dengan asumsi fn dan ln adalah NOT NULL . Belum diuji:

SELECT fn, ln, cat1, cat2
FROM crosstab(
       'SELECT fn || ln AS row_name, fn, ln, file_type, attribute
        FROM   t
        ORDER  BY fn, ln, file_type'

      ,$$VALUES ('cat1'::text), ('cat2')$$)
AS t (row_name text, fn text, ln int, cat1 text, cat2 text);

Opsi lain adalah menambahkan "nama baris" pengganti dengan fungsi jendela seperti dense_rank() dan perlakukan dua kolom yang ditentukan sebagai "kolom tambahan". Contoh:

  • Kueri tab silang postgresql dengan beberapa kolom "nama baris"

Dasar-dasar:

  • Kueri Tab Silang PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beberapa koneksi database di Rails

  2. Bisakah saya membuat fungsi plpgsql mengembalikan integer tanpa menggunakan variabel?

  3. Django cache.set() menyebabkan kesalahan kunci duplikat

  4. Masalah untuk penyisipan menggunakan psycopg

  5. Terhubung ke database PostgreSQL pada wadah Docker