#postgresql
#postgresql
Вопрос:
Я пытаюсь создать небольшой глоссарий в postgresql. До сих пор у меня есть таблица с некоторыми «вертикальными значениями»
General_id Sing_id Synonim Language
1 1 yes en-GB
2 1 ja de-DE
3 1 oui fr-FR
4 2 no en-GB
5 2 nein de-DE
6 2 niet ru-RU
SELECT
General_id,
Sing_id,
Synonim,
Language
FROM table1.base
но я бы хотел, чтобы это было так:
Sing_id en_GB de_DE fr_FR ru_RU ...
1 yes ja oui
2 no nein niet ...
Не хотели бы вы дать мне подсказку о том, как этого добиться?
Ответ №1:
Вы говорите о «повороте».
Смотрите Этот пост: поворот в Postgres
Пример из post:
SELECT *
FROM crosstab(
'SELECT
a date,
b.desc AS os,
(random() * 10000 1)::int AS value
FROM generate_series((now() - ''100 days''::interval)::date, now()::date, ''1 DAY''::interval) a,
(SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux'']) AS DESC) b ORDER BY 1,2
','SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux''])'
)
AS ct(date date, OSX int, Windows int, Linux int);
Комментарии:
1. Спасибо. Я попробую использовать функцию перекрестных таблиц. Я также нашел это: postgresql.org/docs/9.1/static/tablefunc.html