Installeer eerst de extensie tablefunc , als je dat nog niet hebt gedaan. Moet eenmaal per database worden gedaan.
CREATE EXTENSION tablefunc;
Je hebt PostgreSQL 9.1 . nodig voor CREATE EXTENSION
. In oudere versies moet je het installatiescript vanuit de shell uitvoeren met een commando als:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Meer info voor Postgres 9.0 in de fijne handleiding .
Dan kun je een zoekopdracht als deze gebruiken:
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
);
Geeft precies terug waar je om vroeg.
Je kunt daar ook een functie voor maken. Ik heb meer informatie toegevoegd in dit nauw verwante antwoord
.