PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Свиване на редове в една колона

Първо инсталирайте разширението tablefunc , ако още не сте го направили. Трябва да се направи веднъж за база данни.

CREATE EXTENSION tablefunc;

Имате нужда от PostgreSQL 9.1 за CREATE EXTENSION . В по-стари версии трябва да стартирате инсталационния скрипт от обвивката с команда като:

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

Повече информация за Postgres 9.0 в изисканото ръководство .

Тогава можете да използвате заявка като тази:

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

Връща точно това, което поискахте.
Можете също да създадете функция за това. Добавих още информация в този тясно свързан отговор .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL Upsert разграничава вмъкнатите и актуализираните редове с помощта на системни колони XMIN, XMAX и други

  2. Изберете колони от извикване на функция в ядрото на sqlalchemy

  3. Таблица Печат не отговаря на размера на страницата

  4. Заредете PostgreSQL таблица от CSV с данни със запетаи между скоби

  5. Кой е най-бързият начин за прилагане на 150 милиона актуализации на таблицата на PostgreSQL