对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表,并且有许多类似于此的答案,所以:不用担心。接受答案后,您需要单击答案旁边的勾号。它将它推到列表的顶部,当人们重新查看问题时,他们可以很容易地看到哪个答案是正确的。