将简单选择结果转换为2D转置表

时间:2019-06-09 09:34:13

标签: mysql

我有一个联盟的网球比赛结果表。只有三列:Player1,Player2和MatchResult。

根据球员是主场还是外场球员的天气,球员被列在A栏或B栏。如果列在A栏,则表示是主场球员;如果列在B列,则表示是客场球员。因此,例如,名称为G的玩家有时会出现在A栏,有时出现在B栏。

匹配结果可以包含两个或三个部分,以逗号分隔。第一部分用于组合1,第二部分用于组合2,可选的第三部分用于组合3。每个组合的每个结果首先列出主球员,而不是分号和客队。

如果我们从所附图像中选取第一个示例,则解释如下:名为F的Player1与名为B的Player2的比赛失去了以下方式: -玩家B赢得了第一盘6:2 -玩家F赢得了第二盘6:3 -玩家B赢得了第三盘13:11

enter image description here

我想将表格转置为2D格式,就像所附的图像一样。也就是说,每个玩家名称将首先在X和Y表轴上列出,然后每个结果将必须两次放入正确的表单元格中。曾经是主场/客场球员站姿的观点,而且还作为客场/主场球员站姿的观点(红色文字颜色)。

enter image description here

MySQL选择查询如何才能达到此结果?

1 个答案:

答案 0 :(得分:0)

您可以考虑构造一个大型数据透视表,如下所示:

SELECT
    Player1,
    MAX(CASE WHEN Player2 = 'A' THEN MatchResult END) AS A,
    MAX(CASE WHEN Player2 = 'B' THEN MatchResult END) AS B,
    MAX(CASE WHEN Player2 = 'C' THEN MatchResult END) AS C,
    ...,
    MAX(CASE WHEN Player2 = 'Z' THEN MatchResult END) AS Z
FROM yourTable
GROUP BY Player1
ORDER BY Player1;
相关问题