【发布时间】:2021-01-09 19:18:36
【问题描述】:
如果我有这样的查询
SELECT * FROM table1
我得到类似这样的结果:
如何从同一个表中编写查询,返回如下内容:
value_name必须变成列,值列必须变成它的值。
还要注意 id 是重复的,并且它的描述总是相同的。
我正在使用 PostgresQL
【问题讨论】:
-
这在应用程序中比在 SQL 中容易得多。
标签: sql postgresql pivot
如果我有这样的查询
SELECT * FROM table1
我得到类似这样的结果:
如何从同一个表中编写查询,返回如下内容:
value_name必须变成列,值列必须变成它的值。
还要注意 id 是重复的,并且它的描述总是相同的。
我正在使用 PostgresQL
【问题讨论】:
标签: sql postgresql pivot
如果事先知道值,可以使用条件聚合:
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 等替代数据表示。
【讨论】: