首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Postgres SQL中将列值更改为列标题替换为另一列中的值

在Postgres SQL中将列值更改为列标题替换为另一列中的值
EN

Stack Overflow用户
提问于 2021-07-31 18:52:06
回答 1查看 38关注 0票数 0

我无法弄清楚如何将列值转换为列标题,并在发生时分配适当的值

假设我有一个Postgres数据库,包含下表:

代码语言:javascript
复制
 Name      Subject       Score      Region
=======   =========     =======     =======
 Joe       Chemistry      20        America 
 Robert    Math           30        Europe
 Jason     Physics        50        Europe
 Joe       Math           70        America
 Robert    Physics        80        Europe
 Jason     Math           40        Europe
 Jason     Chemistry      60        Europe

我希望选择/获取以下形式的数据:

代码语言:javascript
复制
 Name      Chemistry     Math       Physics     Region
=======   ==========    =======    ========    ========
 Joe        20            70         null       America
 Robert     null          30         80         Europe
 Jason      60            40         50         Europe

考虑到有80个主题。如何编写以这种格式返回数据的SQL select语句?

EN

回答 1

Stack Overflow用户

发布于 2021-07-31 21:33:44

在Postgres中,我推荐使用FILTER语法进行条件聚合:

代码语言:javascript
复制
SELECT name,
       MAX(score) FILTER (WHERE subject = 'Chemistry') AS Chemistry,
       MAX(score) FILTER (WHERE subject = 'Math') AS Math,
       MAX(score) FILTER (WHERE subject = 'Physics') AS Physics
FROM grades
GROUP BY name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68604989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档