Я работаю над запросом сводной таблицы. Схема выглядит следующим образом
Сно, Название, Район
Одно и то же имя может появляться во многих районах, например, взять выборочные данные.
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
Однако есть вероятность, что районы могут увеличиться, в этом случае мне придется снова вручную редактировать запрос и добавлять в него новый район.
Я хочу знать, существует ли запрос, который может динамически получать названия отдельных районов и выполнять приведенный выше запрос. Я знаю, что могу сделать это с помощью процедуры и создания скрипта на лету, есть ли другой способ?
Я спрашиваю об этом, потому что вывод запроса «выбрать отдельные (районы) из района_детали» вернет мне один столбец с названием района в каждой строке, который я хотел бы перенести в столбец.