Maison >base de données >tutoriel mysql >Comment créer une requête MySQL Crosstab pour faire pivoter les données des lignes vers les colonnes ?
Une requête tableau croisé ou pivot dans MySQL vous permet de transformer des données, généralement d'une structure orientée lignes vers un format orienté colonnes, facilitant l'analyse et la présentation. Pour comprendre comment utiliser une requête croisée, examinons un exemple pratique.
Considérons un tableau avec la structure suivante :
app_id transaction_id mobile_no node_id customer_attribute entered_value 100 111 9999999999 1 Q1 2 100 111 9999999999 2 Q2 1 100 111 9999999999 3 Q3 4 100 111 9999999999 4 Q4 3 100 111 9999999999 5 Q5 2 100 222 8888888888 4 Q4 1 100 222 8888888888 3 Q3 2 100 222 8888888888 2 Q2 1 100 222 8888888888 1 Q1 3 100 222 8888888888 5 Q5 4
Vous souhaitez afficher ces enregistrements au format suivant :
app_id transaction_id mobile Q1 Q2 Q3 Q4 | Q5 100 111 9999999999 2 1 4 3 2 100 222 8888888888 3 1 2 1 4
Pour y parvenir, vous pouvez utiliser une requête croisée. Cependant, lors de votre première tentative, vous avez récupéré plusieurs lignes pour chaque point de données, ce qui n'est pas le résultat souhaité.
La requête ajustée suivante fournira le résultat souhaité :
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5 FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no
Vous avez également exprimé le désir d'utiliser les valeurs de la colonne customer_attribute comme en-têtes de colonnes. Bien que la fonction NAME_CONST ne soit pas adaptée à cet effet, vous pouvez utiliser une technique susceptible d'obtenir le résultat souhaité. Cependant, veuillez fournir des précisions supplémentaires sur le résultat souhaité pour permettre une solution précise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!