Pivot Tables dans MySQL avec des colonnes dynamiques
Cette question aborde le défi de créer des tables pivot MySQL avec des colonnes dynamiques. Bien que la solution fonctionne efficacement lorsque User_ID est définie comme une chaîne, elle échoue lors de la rencontre des valeurs entières.
L'extrait de code fourni illustre la tentative initiale de créer la table pivot. Cependant, pour résoudre le problème lié aux valeurs user_id entières, les corrections résident dans la façon dont les noms de colonne sont construits dans la requête SQL dynamique.
Le code d'origine:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
int user_id Les valeurs sont en provoquant le problème car elles sont utilisées directement comme noms de colonnes. Pour y remédier, ces valeurs doivent être enveloppées dans des backticks (`). Le code corrigé ajuste ceci:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
la requête finale, corrigée:
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;
avec ces ajustements, la table pivot peut désormais être générée avec succès même lorsqu'elle traite des valeurs user_id entières.
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