PostgreSQL列到行,不明确指定列名/列

PostgreSQL列到行,不明确指定列名/列,sql,postgresql,data-processing,Sql,Postgresql,Data Processing,我想知道有没有办法在PostgreSQL中取消PIVOT(将列转换为行)数据 例如,如果我有一个如下表: 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

我想知道有没有办法在PostgreSQL中取消PIVOT(将列转换为行)数据

例如,如果我有一个如下表:

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 Server,我知道至少有两种方法可以做到这一点——动态SQL或将数据转换为xml并解析xml。PostgreSQL中可能也有一些xml技巧?

带有
hstore
扩展:

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

使用
hstore
扩展名:

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

请参阅此说明如何使用UNION AllThank取消PIVOT,但我不想显式指定列请参阅此说明如何使用UNION AllThank取消PIVOT,但我不想显式指定列