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

Masalah crosstab/pivot PostgreSQL

Kasus uji (cara yang lebih disukai untuk memberikan data sampel):

CREATE TEMP TABLE prefs (pref_id int, pref_name text, pref_value text);

INSERT INTO prefs VALUES 
 (1, 'PagerNumber' , '2125551234')
,(2, 'PagerCarrier', '@att.com')
,(3, 'PagerCarrier', '@something.com');

Pertanyaan:

SELECT *
FROM   crosstab(
       'SELECT pref_id, pref_name, pref_value
        FROM   prefs
        ORDER  BY 1, 2',

       $$VALUES ('PagerNumber'::text), ('PagerCarrier')$$
       )
AS x (section text, pager_number bigint, pager_carrier text);

Mengembalikan persis hasil yang digambarkan dalam pertanyaan Anda. Jika PagerNumber bisa menjadi sesuatu selain bigint yang valid nomor, gunakan text sebagai gantinya.

Jawaban yang Anda maksudkan dalam pertanyaan Anda sudah usang dan tidak pernah benar sejak awal. Saya menambahkan jawaban yang tepat dengan penjelasan dan tautan di sana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan kolom dengan angka yang berurutan dan meningkat, tanpa ada angka yang hilang?

  2. Bagaimana cara mendefinisikan ulang nextval secara global di PostgreSQL?

  3. Spring JDBC - Id yang terakhir dimasukkan

  4. Dapatkan Abad dari Tanggal di PostgreSQL

  5. Tambahkan Tahun ke Tanggal di PostgreSQL