SQL | 根据条件将列视为多列

Chr*_*low 3 sql postgresql

新手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语句来实现这个目的,但到目前为止还没有成功.

任何帮助是极大的赞赏!

e_i*_*_pi 5

在对列进行分组Name然后有条件地SUMScore列进行分组时从整个表中进行选择将起作用:

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"
Run Code Online (Sandbox Code Playgroud)

您是否使用SUM()取决于您以及数据的外观.如果每对(Name,Season)对有一行,那么SUM()它将同样有效MAX()