【问题标题】:Transform rows to columns SQL Query将行转换为列 SQL 查询
【发布时间】:2021-01-09 19:18:36
【问题描述】:

如果我有这样的查询

SELECT * FROM table1

我得到类似这样的结果:

如何从同一个表中编写查询,返回如下内容:

value_name必须变成列,值列必须变成它的值。

还要注意 id 是重复的,并且它的描述总是相同的。

我正在使用 PostgresQL

【问题讨论】:

  • 这在应用程序中比在 SQL 中容易得多。

标签: sql postgresql pivot


【解决方案1】:

如果事先知道值,可以使用条件聚合:

select id, description,
       max(value) filter (where value_name = 'FE') as fe,
       max(value) filter (where value_name = 'H2O') as h2o,
       max(value) filter (where value_name = 'N') as n
from t
group by id, description;

如果您不知道名称,则无法通过单个 SQL 查询完成此操作。您需要使用动态 SQL 或使用 JSON 等替代数据表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多