sql >> Databasteknik >  >> RDS >> PostgreSQL

Komprimera rader till en kolumn

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 .



  1. SQLite Index

  2. Hur refererar man till en förälders ID i ett barns ID med JPA/Hibernate?

  3. Ta bort dubbletter av rader från tabellen med join

  4. problem med att köra liquibase med maven och postgres-db