mysql一列数据转为一行_mysql查询将行数据动态转换为列

我正在处理数据透视表查询。架构如下

Sno,名称,地区

同一名称可能在许多地区出现,例如以样本数据为例

1 Mike CA

2 Mike CA

3 Proctor JB

4 Luke MN

5 Luke MN

6 Mike CA

7 Mike LP

8 Proctor MN

9 Proctor JB

10 Proctor MN

11 Luke MN

如您所见,我有一组4个不同的地区(CA,JB,MN,LP)。现在,我想通过将名称映射到区域来获取为其生成的数据透视表

Name CA JB MN LP

Mike 3 0 0 1

Proctor 0 2 2 0

Luke 0 0 3 0

我为此写了以下查询

select name,sum(if(District=”CA”,1,0)) as “CA”,sum(if(District=”JB”,1,0)) as “JB”,sum(if(District=”MN”,1,0)) as “MN”,sum(if(District=”LP”,1,0)) as “LP” from district_details group by name

但是,地区可能会增加,在这种情况下,我将不得不再次手动编辑查询并向其中添加新的地区。

我想知道是否存在一个查询,该查询可以动态获取不同地区的名称并运行上述查询。 我知道我可以通过一个过程来完成该任务并即时生成脚本,还有其他方法吗?

我之所以这么问是因为查询“ select from district_details选择distinct(districts)

”的输出将返回我在每一行上具有地区名称的一列,我希望将其转置为该列。

    原文作者:moumoon沐月
    原文地址: https://blog.csdn.net/weixin_31858171/article/details/111924921
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞