PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Reduzieren Sie Zeilen in eine Spalte

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 .