新手 Postgresql (9.6.6) 问题在这里:)
我想创建一个 View ,根据不同的条件将单列拆分为多列。
示例表
Name Score Season ------- ------- -------- John 12 Fall John 15 Winter John 13 Spring Sally 17 Fall Sally 10 Winter Sally 14 Spring Henry 16 Fall Henry 12 Winter Henry 18 Spring
我希望 View 显示如下所示的内容:
Name Fall Score Winter Score Spring Score ------- ------------ -------------- -------------- John 12 15 13 Sally 17 10 14 Henry 16 12 18
其中“Score”字段被分成几个不同的列,每个列都基于引用“Season”字段的 WHERE 子句进行填充。我已经研究了 Window Functions 和 CASE Statements 来实现这个目的,但到目前为止还没有成功。
非常感谢任何帮助!
最佳答案
从整个表中选择,同时根据 Name
分组,然后有条件地 SUM
ming 在 Score
列上将起作用:
SELECT
"Name",
SUM(CASE WHEN "Season" = 'Fall' THEN "Score" ELSE 0 END) AS "Fall",
SUM(CASE WHEN "Season" = 'Winter' THEN "Score" ELSE 0 END) AS "Winter",
SUM(CASE WHEN "Season" = 'Spring' THEN "Score" ELSE 0 END) AS "Spring"
FROM "mytable"
GROUP BY "Name"
是否使用 SUM()
取决于您和您的数据的外观。如果每个 (Name
, Season
) 对有一行,那么 SUM()
将与 MAX()< 一样有效
关于数据库 |根据条件将列查看为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48332125/