Installer først udvidelsen tablefunc , hvis du ikke allerede har gjort det. Skal gøres én gang pr. database.
CREATE EXTENSION tablefunc;
Du skal bruge PostgreSQL 9.1 for CREATE EXTENSION
. I ældre versioner skal du køre installationsscriptet fra skallen med en kommando som:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Mere info om Postgres 9.0 i den fine manual .
Så kan du bruge en forespørgsel som denne:
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
);
Returnerer præcis det, du bad om.
Du kan også oprette en funktion til det. Jeg tilføjede flere oplysninger i dette nært beslægtede svar
.