Создать таблицу, в которой каждый столбец представляет собой отдельное значение, полученное из запроса выбора. - PullRequest
0 голосов
/ 15 октября 2018

Я хочу создать таблицу, в которой каждый столбец представляет собой отдельное значение, полученное из запроса выбора.

Пример:

[Запрос]

SELECT DISTINCT col 
FROM table

[Результат]

col
 --- 
val1
val2
val3
val4

Запрошенная таблица:

Column1 | Column2 | Column3 | ... | ColumnN
-------------------------------------------
 val1   |  val2   |  val3   | ... | valN 

Существует неизвестное количество различных значений.Все столбцы должны быть созданы как тип TEXT.

Возможно ли использовать SQL без процедур?

Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Вы должны использовать динамическую команду .Если вы не хотите создавать функцию, используйте блок анонимного кода, например:

create table table_cols(col text);
insert into table_cols values
('col1'), 
('col2'),
('col3');

do $$
begin
    execute format('create table new_table(%s text)', string_agg(distinct col, ' text, '))
    from table_cols;
end
$$

Проверка:

\d new_table

            Table "public.new_table"
 Column | Type | Collation | Nullable | Default 
--------+------+-----------+----------+---------
 col1   | text |           |          | 
 col2   | text |           |          | 
 col3   | text |           |          | 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...