


Comment créer une requête MySQL Crosstab pour faire pivoter les données des lignes vers les colonnes ?
Jan 06, 2025 am 10:42 AMRequête pivot/croisée MySQL : transformation des données pour un affichage amélioré
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.
Exemple : faire pivoter les données vers un format orienté colonnes
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é.
Requête de tableau croisé corrigée
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
Utiliser l'attribut client comme en-tête de colonne
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
