【问题标题】: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。
  • 这能回答你的问题吗:stackoverflow.com/questions/23060256/…
  • @jarlh:“简单”的方法是使用横向连接;)
  • @a_horse_with_no_name,是的,当然。

标签: sql postgresql unpivot


【解决方案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 。 . .这回答了您提出的问题,我认为您应该接受答案。如果您有一个不同的问题,那么将其作为一个问题提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多