Сводная таблица с динамическими именами столбцов MySQL

0

Привет всем, кто это читает,

После некоторого времени поиска я понял, что мне нужна сводная таблица. Однако он должен быть динамичным. В предложении where я настрою unit_id, и каждое учреждение будет либо учителем/начальной школой/средней школой, так что это означает, что имя столбца изменится по мере того, как возраст будет отличаться для каждого этапа жизни. (Мне нужно объединить возраст и пол вместе)

Это SQL-запрос, который я использовал.

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF("2018-08-31", date_of_birth)), "%Y")+0 AS 'Age', class.name AS 'Name',
CASE 
    WHEN gender_id = '1'
           THEN 'M'
           ELSE 'F' 
    END as Gender

from security_users AS 'su'
INNER JOIN institution_class_students AS 'cs'
ON su.id = cs.student_id

INNER JOIN institution_classes AS 'class'
ON cs.institution_class_id = class.id

WHERE cs.institution_id = 538

ORDER BY Name

Ниже приведен пример вывода для одного класса после выполнения вышеуказанного запроса.

Age Name      Gender
3   Form 1-1    M
4   Form 1-1    F
4   Form 1-1    F
3   Form 1-1    F
3   Form 1-1    F
4   Form 1-1    M
4   Form 1-1    M
4   Form 1-1    F
5   Form 1-1    F
4   Form 1-1    F
3   Form 1-1    F
3   Form 1-1    F
3   Form 1-1    M
3   Form 1-1    M
4   Form 1-1    F
4   Form 1-1    F
5   Form 1-1    F
5   Form 1-1    F
4   Form 1-1    M
4   Form 1-1    M

Основываясь на вышеприведенном выше, это должен выглядеть мой результат. Если бы я баллотировался в учреждение со старшими учениками, это будет и т.д. 11-M, 11-F, 12-M, 12-F.

Class     3-M  3-F  4-M 4-F 5-M 5-F                                     
Form 1-1   3    4    4   6   0   3

Ниже приведен пример того, как он должен выглядеть, если я буду баллотироваться в учреждение

Class    3-M  3-F  4-M  4-F 5-M 5-F                                     
Form 1-2  5    6    3    2   0   1   
Form 1-3  4    2    7    5   0   0    
Form 2    0    0    4    1   7   1   
Form 3    0    0    0    0   8   9   

Можно ли это сделать? Я прочитал много учебников по сводной таблице, но мне трудно понять, как это сделать. Любой может пролить свет на это. Цените каждую помощь! Надеюсь, что приведенные выше детали легко понять.

  • 1
    Это возможно. Можете ли вы опубликовать запрос на создание таблиц, которые вы использовали, и некоторые примеры данных? Я посмотрю, смогу ли я помочь
  • 1
    если возможно, создайте sqlfiddle, sqlfiddle.com
Показать ещё 1 комментарий
Теги:
pivot-table

1 ответ

0

См. Http://mysql.rjweb.org/doc.php/pivot. Он содержит (и объясняет) хранимую процедуру, которая просматривает таблицу, чтобы построить необходимый сводный запрос. Затем он выполняет его. CALL для хранимой процедуры обеспечивает 6 аргументов, что обеспечивает большую гибкость, чем требуется большинству людей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню