Postgresql以通用方式将列更改为行

Posted

技术标签:

【中文标题】Postgresql以通用方式将列更改为行【英文标题】:Postgresql change column to row in a generic way 【发布时间】:2013-07-19 12:37:41 【问题描述】:

需要从大约一百列的表中检索键值对(列名,值)。

以下查询正是需要的。

With dummy AS (
    Select 1 as Col1, 2 as Col2
)
SELECT
   unnest(array['Col1', 'Col2']) AS "Column Name",
   unnest(array[Col1, Col2]) AS "Value"
FROM dummy

但是,它需要明确指定列。

有没有办法通过不直接指定列名或动态生成来生成相同的输出。

【问题讨论】:

【参考方案1】:

是的,在限制范围内。请参阅crosstab function in the tablefunc extension。

它不如真正的原生 CROSSTABPIVOT 命令好,但它会完成这项工作。

【讨论】:

以上是关于Postgresql以通用方式将列更改为行的主要内容,如果未能解决你的问题,请参考以下文章

如何将列更改为行[重复]

SQL Server 2008 - 从 Float 将列更改为 Varchar 产生科学记数法

将列更改为可为空的查询不起作用[重复]

访问 SQL - 将列更改为自动编号?

使用条件将列更改为单独的数据框

将旧 SQL 表中的数据插入到新表中,列更改为行