Първо инсталирайте разширението 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
);
Връща точно това, което поискахте.
Можете също да създадете функция за това. Добавих още информация в този тясно свързан отговор
.