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

Pivot / tab silang dengan lebih dari satu kolom nilai

Salah satu caranya adalah dengan menggunakan tipe komposit:

CREATE TYPE i2 AS (a int, b int);

Atau, untuk penggunaan ad-hoc (mendaftarkan jenis untuk durasi sesi):

CREATE TEMP TABLE i2 (a int, b int);

Kemudian jalankan tab silang seperti yang Anda ketahui dan dekomposisi tipe komposit:

SELECT client_id
     , (a0).a AS a0_cur_val, (a0).b AS a0_fut_val
     , (a1).a AS a1_cur_val, (a1).b AS a1_fut_val
     , (a2).a AS a2_cur_val, (a2).b AS a2_fut_val
FROM   crosstab(
       'SELECT client_id, asset_type, (current_value, future_value)::i2
        FROM   foo
        ORDER  BY 1,2'

      ,'SELECT * FROM generate_series(0,2)'
   ) AS ct (client_id int, a0 i2, a1 i2, a2 i2);

Semua tanda kurung wajib !

Dasar-dasar untuk crosstab() :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy dengan default dataclass tidak mengisi database postgres

  2. Jatuhkan urutan dan kaskade

  3. * Bidang tidak dikenal di:database Maksud Anda?:- metrik - server - logging - DROPWIZARD

  4. Untuk mengkonversi dari array Python ke PostgreSQL dengan cepat?

  5. Ringkas atau beri nomor ulang ID untuk semua tabel, dan setel ulang urutan ke maks(id)?