SQL - 将一行转置为两列

标签 sql postgresql transpose

我的 SQL 查询返回几列,但只返回一行。我需要将这一行和列的名称转置为两列 - 第一列包含列名称,第二列包含行值。由于某些原因,我无法使用交叉表。

我想要执行的操作如下所示。 之前:

 Column1 | Column2 | Column3 | Column4
---------+---------+---------+--------
 Value1  | Value2  | Value3  | Value4

我想要得到这个:

Cols    |   Vals
--------+---------
Column1 |  Value1
Column2 |  Value2
Column3 |  Value3
Column4 |  Value4

最佳答案

这符合你的要求吗?

SELECT 
    'Column1' AS Cols
    , Column1 AS Vals
FROM Table
UNION ALL
SELECT 
    'Column2' AS Cols
    , Column2 AS Vals
FROM Table
UNION ALL
SELECT 
    'Column3' AS Cols
    , Column3 AS Vals
FROM Table
UNION ALL
SELECT 
    'Column4' AS Cols
    , Column4 AS Vals
FROM Table

关于SQL - 将一行转置为两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540904/

相关文章:

excel - 如何将部分 Excel 数据转换为列以获得所需的输出?

r - 转置和计算 PIL 逊相关

c++ - __m256d TRANSPOSE4 等效?

SQL INNER JOIN问题

php - 从多行增加相同列的值

sql - 在一天/月/周结束时获取值的总和

PostgreSQL 数据目录配置

mysql - 使用 MySQL 创建循环排列的优雅方法

PHP 脚本运行 SQL 更新命令,但它被忽略

postgresql - 我可以在同一台机器上运行 Postgres 8.4 和 Postgres 9 吗?