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

Gunakan nilai baris sebagai kolom di PostgreSQL

crosstab() kueri untuk contoh Anda akan terlihat seperti ini:

Untuk mengisi 0 untuk menghasilkan NULL nilai (permintaan dalam komentar), gunakan COALESCE() :

SELECT brand_id
     , COALESCE(jan, 0) AS "Jan-2012"
     , COALESCE(feb, 0) AS "Feb-2012"
     , COALESCE(mar, 0) AS "Mar-2012"
     , COALESCE(apr, 0) AS "Apr-2012"
FROM crosstab(
       'SELECT brand_id, month, total
        FROM   brands
        ORDER  BY 1'

       ,$$VALUES ('Jan-2012'::text), ('Feb-2012'), ('Mar-2012'), ('Apr-2012')$$
 ) AS ct (
   brand_id int
 , jan numeric    -- use actual data type!
 , feb numeric
 , mar numeric
 , apr numeric);

Penjelasan terperinci dan tautan dalam jawaban terkait ini:
Tab Silang PostgreSQL Kueri

Selain:tidak menggunakan kata "tanggal" yang dicadangkan sebagai nama kolom dan Anda juga tidak boleh, bahkan jika Postgres mengizinkannya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel:Kesalahan [PDOException]:Tidak Dapat Menemukan Driver di PostgreSQL

  2. Kiat Penyesuaian Kinerja PostgreSQL

  3. Sequelize:Menanyakan apakah ARRAY berisi nilai

  4. Integrasi postgreSQL di WAMP

  5. Plpgsql:Bagaimana saya bisa menetapkan nilai ke variabel di bagian deklarasi?