"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment créer un tableau croisé dynamique dans MySQL avec des noms de colonnes entiers ?

Comment créer un tableau croisé dynamique dans MySQL avec des noms de colonnes entiers ?

Publié le 2025-01-20
Parcourir:456

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

Tableau croisé dynamique MySQL avec noms de colonnes entiers

Créer un tableau croisé dynamique avec des noms de colonnes entiers dans MySQL pose un léger défi. Lors de l'exécution de la requête fournie, vous pouvez rencontrer une erreur si les valeurs user_id sont des nombres entiers. Pour résoudre ce problème, nous devons envelopper les valeurs user_id dans des backticks (`).

La requête SQL ajustée ressemble à ceci :

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;

La modification clé ici est l'ajout de backticks autour des valeurs user_id dans l'instruction GROUP_CONCAT. En faisant cela, nous garantissons que les valeurs user_id sont traitées comme des chaînes au lieu de noms de colonnes.

Démo SQL Fiddle : https://sqlfiddle.com/#!2/eab24/ 4

Désormais, même avec des valeurs user_id entières, le tableau croisé dynamique sera généré avec succès.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3