PostgreSQL 9.6 кросс-таблица, создать сводную - PullRequest
0 голосов
/ 08 сентября 2018

Как в PostgreSQL 9.6, из таблицы «import» со структурой ниже в ссылке ...

Structure of 'import' table

создайте запрос / функцию, затем перенесите его в нечто вроде этого:

Structure of expected view

К сожалению, таблица «import» не имеет поля идентификатора. Я попытался использовать кросс-таблицу с tablefunc, но безрезультатно.

1 Ответ

0 голосов
/ 08 сентября 2018

Вы ищете противоположность кросс-таблицы или разворота: вы ищете разворотную точку

В стандартном SQL вы могли бы сделать это с помощью UNION ALL (если СУБД не поддерживает оператор unpivot, а Postgres - нет):

select dlimportdate, 1 as colno, col1 as value
from the_table
union all
select dlimportdate, 2, col1
from the_table
union all
...

Однако в Postgres есть более короткий способ сделать это. Создайте массив столбцов, затем используйте unnest, чтобы превратить их в строки:

select dlimportdate, t.colno, t.value
from the_table
  cross join unnest(array[col1, col2, col3, ...]) with ordinality as t(value, colno);
...