对mysql查询中的数据进行分组或数据透视,使行成为列

对mysql查询中的数据进行分组或数据透视,使行成为列,mysql,Mysql,我正面临着解决我需要的问题的困难。我有这样一个场景 colDist colGender attnedancePrcnt Place-1 Male 2.5 % Place-1 Female 1.5% Place-2 Male 3.5% Place-2 Female 2.1% colDist

我正面临着解决我需要的问题的困难。我有这样一个场景

colDist       colGender           attnedancePrcnt
Place-1        Male                 2.5 %
Place-1        Female               1.5%
Place-2        Male                 3.5%
Place-2        Female               2.1%
colDist       colMale           colFemale
Place-1        2.5%                1.5 %
Place-2        3.5%                2.1 % 
colDist       colMale           colFemale          attnedancePrcnt
Place-1        Male                NULL                 2.5
Place-1        NULL                Female               1.5
Place-2        Male                NULL                 3.5
Place-2        NULL                Female               2.1
现在我需要mysql中的一个查询来获得这样的数据

colDist       colGender           attnedancePrcnt
Place-1        Male                 2.5 %
Place-1        Female               1.5%
Place-2        Male                 3.5%
Place-2        Female               2.1%
colDist       colMale           colFemale
Place-1        2.5%                1.5 %
Place-2        3.5%                2.1 % 
colDist       colMale           colFemale          attnedancePrcnt
Place-1        Male                NULL                 2.5
Place-1        NULL                Female               1.5
Place-2        Male                NULL                 3.5
Place-2        NULL                Female               2.1
这是一个由coldDist组成的小组,但我正面临着将第一个数据集的colMale和colFemale转换成第二个数据集的困难

提前谢谢

这种方法

select colDist, if(colGender='Male',colGender,null ) as   colMale ,
        if(colGender='Female',colGender,null ) as   colFemale 
 from tablename
给我这样的结果

colDist       colGender           attnedancePrcnt
Place-1        Male                 2.5 %
Place-1        Female               1.5%
Place-2        Male                 3.5%
Place-2        Female               2.1%
colDist       colMale           colFemale
Place-1        2.5%                1.5 %
Place-2        3.5%                2.1 % 
colDist       colMale           colFemale          attnedancePrcnt
Place-1        Male                NULL                 2.5
Place-1        NULL                Female               1.5
Place-2        Male                NULL                 3.5
Place-2        NULL                Female               2.1
但我还是需要他们这样:

colDist       colMale           colFemale
Place-1        2.5%                1.5 %
Place-2        3.5%                2.1 % 
那么,如何根据需要对数据进行分组或透视呢


谢谢。

检查它是否按您的要求工作:

 select colDist, if(colGender='Male',colGender,null ) as   colMale ,
        if(colGender='Female',colGender,null ) as   colFemale 
 from tablename

同样值得注意的是,“attnedance”应拼写为“Attention”。

非常感谢您的关注,但我需要基于colDist的分组,因为您已经注意到位置1和位置2。在您的解决方案中,我发现男性列为null,如果是女性列,则反之亦然。您建议我使用pivot qury,尽管我对pivot查询没有深入了解。检查此项:希望它能帮助您这称为pivot表,并且有许多类似于此的答案,所以:不用担心。接受答案后,您需要单击答案旁边的勾号。它将它推到列表的顶部,当人们重新查看问题时,他们可以很容易地看到哪个答案是正确的。