Installieren Sie zuerst die Erweiterung tablefunc , falls noch nicht geschehen. Muss einmal pro Datenbank durchgeführt werden.
CREATE EXTENSION tablefunc;
Sie benötigen PostgreSQL 9.1 für CREATE EXTENSION
. In älteren Versionen müssen Sie das Installationsskript von der Shell mit einem Befehl wie dem folgenden ausführen:
psql -d dbname -f SHAREDIR/contrib/tablefunc.sql
Weitere Informationen zu Postgres 9.0 im feinen Handbuch .
Dann können Sie eine Abfrage wie diese verwenden:
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
);
Gibt genau das zurück, wonach Sie gefragt haben.
Sie können dafür auch eine Funktion erstellen. Ich habe weitere Informationen in dieser eng verwandten Antwort
hinzugefügt .