«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать динамическую сводную таблицу в MySQL с целочисленными именами столбцов?

Как создать динамическую сводную таблицу в MySQL с целочисленными именами столбцов?

Опубликовано 20 января 2025 г.
Просматривать:744

How to Create a Dynamic Pivot Table in MySQL with Integer Column Names?

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

Создание динамической сводной таблицы с целочисленными именами столбцов в MySQL представляет собой небольшую проблему. При выполнении предоставленного запроса вы можете столкнуться с ошибкой, если значения user_id являются целыми числами. Чтобы решить эту проблему, нам нужно заключить значения user_id в обратные кавычки (`).

Скорректированный SQL-запрос выглядит следующим образом:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Ключевым изменением здесь является добавление обратных кавычек вокруг значений user_id в операторе GROUP_CONCAT. Делая это, мы гарантируем, что значения user_id обрабатываются как строки, а не имена столбцов.

Демо-версия SQL Fiddle: https://sqlfiddle.com/#!2/eab24/ 4

Теперь даже при целочисленных значениях user_id динамическая сводная таблица будет успешно сгенерирована.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3