Installera först tillägget tablefunc , om du inte redan har gjort det. Behöver göras en gång per databas.
CREATE EXTENSION tablefunc;
Du behöver PostgreSQL 9.1 för CREATE EXTENSION
. I äldre versioner måste du köra installationsskriptet från skalet med ett kommando som:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Mer information om Postgres 9.0 i den fina handboken .
Då kan du använda en fråga som den här:
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
);
Returnerar exakt det du bad om.
Du kan också skapa en funktion för det. Jag har lagt till mer information i detta nära relaterade svar
.