sql >> Database >  >> RDS >> PostgreSQL

Rijen samenvouwen tot één kolom

Installeer eerst de extensie tablefunc , als je dat nog niet hebt gedaan. Moet eenmaal per database worden gedaan.

CREATE EXTENSION tablefunc;

Je hebt PostgreSQL 9.1 . nodig voor CREATE EXTENSION . In oudere versies moet je het installatiescript vanuit de shell uitvoeren met een commando als:

psql -d dbname -f SHAREDIR/contrib/tablefunc.sql

Meer info voor Postgres 9.0 in de fijne handleiding .

Dan kun je een zoekopdracht als deze gebruiken:

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
);

Geeft precies terug waar je om vroeg.
Je kunt daar ook een functie voor maken. Ik heb meer informatie toegevoegd in dit nauw verwante antwoord .



  1. SQL Server ODBC-stuurprogramma geeft geen fouten

  2. De impact van DBCC CHECKDB minimaliseren:DO's en DONT's

  3. problemen met python manage.py migreren -> Geen module met de naam psycopg2

  4. Hoe PLAY_SOUND in Oracle Forms