将单行转置为列

Posted

技术标签:

【中文标题】将单行转置为列【英文标题】:transpose single row to column 【发布时间】:2020-11-17 15:10:38 【问题描述】:

我见过类似的问题,但答案对我不起作用,我想转置下表:

| 2017  | 2018  | 2019  | 2020  |
|------ |------ |------ |------ |
| 358   | 1300  | 973   | 101   |

并且想得到这张桌子:

|       | Count     |
|------ |-------    |
| 2017  | 358       |
| 2018  | 1300      |
| 2019  | 973       |
| 2020  | 101       |

【问题讨论】:

一般、简单的方法:UNION ALL。 这能回答你的问题吗:***.com/questions/23060256/… @jarlh:“简单”的方法是使用横向连接;) @a_horse_with_no_name,是的,当然。 【参考方案1】:

使用横向连接:

select x.year, x.count
from the_table t
  cross join lateral (
      values ("2017", 2017), ("2018", 2018), ("2019", 2019), ("2020", 2020)
  ) as x(count, year)

Online example

【讨论】:

它对我不起作用。我收到错误 ERROR: column "2017" does not exist in t @enriqueqs:您的示例数据显示了一个名为 "2017" 的列 - 如果您没有,您应该向我们展示 real 列名。 它来自sum(2017_values) as "2017" @enriqueqs:请编辑您的问题并向我们展示完整的查询。根据问题中的当前信息,这是唯一可能给出的答案。 @enriqueqs 。 . .这回答了您提出的问题,我认为您应该接受答案。如果您有一个不同的问题,那么将其作为一个问题提出。

以上是关于将单行转置为列的主要内容,如果未能解决你的问题,请参考以下文章

使用交叉应用将列转置为行

Postgresql 查询将列转置为行

将多行数据列转置为一列

使用 Spark 将列转置为行

将列转置为行 SQL Server

oracle sql 11G中如何将列转置为行