Pertama instal ekstensi tablefunc , jika Anda belum melakukannya. Perlu dilakukan sekali per database.
CREATE EXTENSION tablefunc;
Anda memerlukan PostgreSQL 9.1 untuk CREATE EXTENSION
. Di versi yang lebih lama Anda harus menjalankan skrip instal dari shell dengan perintah seperti:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Info lebih lanjut untuk Postgres 9.0 di manual yang bagus .
Kemudian Anda dapat menggunakan kueri seperti ini:
SELECT *
FROM crosstab (
'SELECT id
,label
,value
FROM t
ORDER BY 1, 2',
'SELECT DISTINCT label
FROM t
ORDER BY 1')
AS tbl (
id int
,lab1 text
,lab2 text
,lab3 text
,lab4 text
,lab5 text
,lab6 text
);
Mengembalikan persis seperti yang Anda minta.
Anda juga dapat membuat fungsi untuk itu. Saya menambahkan informasi lebih lanjut dalam jawaban yang terkait erat
ini .