Najpierw zainstaluj rozszerzenie tablefunc , jeśli jeszcze tego nie zrobiłeś. Należy to zrobić raz na bazę danych.
CREATE EXTENSION tablefunc;
Potrzebujesz PostgreSQL 9.1 dla CREATE EXTENSION
. W starszych wersjach musisz uruchomić skrypt instalacyjny z powłoki za pomocą polecenia takiego jak:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Więcej informacji na temat Postgres 9.0 w doskonałej instrukcji .
Następnie możesz użyć zapytania takiego jak to:
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
);
Zwraca dokładnie to, o co prosiłeś.
Możesz również utworzyć funkcję do tego. Dodałem więcej informacji w tej ściśle powiązanej odpowiedzi
.