首页 > 解决方案 > Redshift - 根据标准在不同的列中返回不同的结果

问题描述

我想查询一个表格,我将在其中获取玩家玩过的所有游戏以及他们下注的金额。

所以记录会是这样的:

Playerid, Date, Game, GameCategoryId, Bet

我希望结果与此类似:

Playerid   CategoryId1Bet  CategoryId2Bet  CategoryId3Bet

我将拥有所有不同类别的所有球员和所有最好的球员。

select playerid,
  case when GameCategoryId = 1 then sum(Bet) end as CategoryId1Bet,
  case when GameCategoryId = 2 then sum(Bet) end as CategoryId2Bet,
  case when GameCategoryId = 3 then sum(Bet) end as CategoryId3Bet
from playertable
group by playerid
order by playerid

但是,这不起作用,它要求我按 gamecategoryid 分组

标签: amazon-web-servicesgroup-byamazon-redshift

解决方案


尝试这个:

select playerid,
  SUM(CASE WHEN GameCategoryId = 1 THEN Bet END) as CategoryId1Bet,
  SUM(CASE WHEN GameCategoryId = 2 THEN Bet END) as CategoryId2Bet,
  SUM(CASE WHEN GameCategoryId = 3 THEN Bet END) as CategoryId3Bet
FROM playertable
GROUP BY playerid
ORDER BY playerid

推荐阅读