我正在尝试将 PostgreSQL 中的列值转换为行。每个系列赛中每个球员最多可以参加 3 场比赛 (bof2)。对于每场比赛,他都有他选择的口袋妖怪和他得分的分数。其外观如下:
想要的结果:
我尝试过使用 nth_element 和 ronumber() 但都无法弄清楚。
最佳答案
根据选择的列值检索第一、第二和第三匹配的神奇宝贝和分数。使用玩家明智的分组依据和 MAX() 函数,因为显示单行。
-- PostgreSQL
SELECT Player
, MAX(CASE WHEN Picked = 1 THEN Pokemon_Picked END) "First Match Pokemon"
, MAX(CASE WHEN Picked = 1 THEN Points END) "First Match Points"
, MAX(CASE WHEN Picked = 2 THEN Pokemon_Picked END) "Second Match Pokemon"
, MAX(CASE WHEN Picked = 2 THEN Points END) "Second Match Points"
, MAX(CASE WHEN Picked = 3 THEN Pokemon_Picked END) "Third Match Pokemon"
, MAX(CASE WHEN Picked = 3 THEN Points END) "Third Match Points"
FROM table_name
GROUP BY Player
关于sql - 如何将列值转换为行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71629999/