sql - 创建表,其中每一列都是从选择查询中检索到的不同值

标签 sql postgresql

我想创建一个表,其中每一列都是从选择查询中检索到的不同值。

例子:

[查询]

SELECT DISTINCT col 
FROM table

[结果]

col
 --- 
val1
val2
val3
val4

请求的表:

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

存在未知数量的不同值。所有列都应创建为 TEXT 类型。

这是否可以在没有过程的情况下使用 SQL?

谢谢。

最佳答案

你必须使用 dynamic command .如果您不想创建函数,请使用匿名代码块,例如:

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

关于sql - 创建表,其中每一列都是从选择查询中检索到的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52816052/

相关文章:

java - Postgres错误: a column definition list is only allowed for functions returning "record"

c# - SqlConnection,出现错误并且无法连接到数据库(发生在System.Data.dll中)

Postgresql创建表条件排除tsrange中的一列

mysql - 将数据从 Redshift 复制到 MySQL/PSQL

php - MySQL GROUP BY 计数

javascript - Mysql选择包含字符串+特定int列的行比较

mysql - 从 MySQL (MariaDB) 中的存储过程返回 ROW COUNT

sql - 一系列正负百分比的总百分比

ruby-on-rails - 无法连接到服务器 : "/var/run/postgresql/.s.PGSQL.5432"?

postgresql - 复制 csv postgres 忽略违反约束的行