gpt4 book ai didi

sql - 未明确指定列名/列的 PostgreSQL 列到行

转载 作者:行者123 更新时间:2023-11-29 13:33:46 25 4
gpt4 key购买 nike

我想知道有什么方法可以在 PostgreSQL 中对数据进行逆透视(将列转为行)。

例如,如果我有这样一张表:

ID   Name    Age
1 Alice 16
2 Bob 21
3 Carl 18

我想得到这样的输出

ID   Column_Name Column_Value
1 Name Alice
1 Age 16
2 Name Bob
2 Age 21
3 Name Carl
3 Age 18

我知道我可以这样做(sql fiddle 用数据来尝试):

select
U.ID,
unnest(array['Name', 'Age']) as Column_Name,
unnest(array[U.Name, U.Age::text]) as Column_Value
from Users as U

但是有没有什么办法可以在不显式指定列名的情况下对表中的所有列执行此操作?例如,对于 SQL Server,我知道至少有 2 种方法可以做到这一点 - 动态 SQL 或将数据转换为 xml 并解析 xml - SQL Server : Columns to Rows . PostgreSQL 中可能也有一些 xml 技巧?

最佳答案

使用 hstore 扩展:

SELECT id, skeys(hstore(users)) AS column, svals(hstore(users)) AS value FROM users;

关于sql - 未明确指定列名/列的 PostgreSQL 列到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com