Maison >base de données >tutoriel mysql >Comment faire pivoter les données des colonnes MySQL en lignes à l'aide de l'agrégation et des instructions conditionnelles ?

Comment faire pivoter les données des colonnes MySQL en lignes à l'aide de l'agrégation et des instructions conditionnelles ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 18:12:18666parcourir

How to Pivot MySQL Column Data into Rows Using Aggregation and Conditional Statements?

Données de colonne de tableau croisé dynamique MySQL sous forme de lignes

Pour faire pivoter efficacement les données de colonne de tableau croisé dynamique en lignes dans MySQL, vous pouvez utiliser une combinaison de fonctions d'agrégation et conditionnel déclarations.

Requête :

SELECT
  a.ID,
  a.user_ID,
  a.job_id,
  MAX(CASE WHEN c.question = 'Is it this?' THEN b.answer END) 'Is it this?',
  MAX(CASE WHEN c.question = 'Or this?' THEN b.answer END) 'Or this?',
  MAX(CASE WHEN c.question = 'Or that? ' THEN b.answer END) 'Or that? '
FROM
  Results a
INNER JOIN
  Answers b ON a.id = b.fk_result_id
INNER JOIN
  Question c ON b.fk_question_id = c.ID
GROUP BY
  a.ID,
  a.user_ID,
  a.job_id;

Explication :

  1. Rejoignez les résultats, les réponses et la question tableaux.
  2. Utilisez l'instruction CASE pour évaluer si chaque condition de question est remplie et renvoyer la réponse correspondante réponse.
  3. Agrégez le nombre maximum de réponses pour chaque question à l'aide de la fonction MAX().

Conseils supplémentaires :

  • Si vous avez un nombre dynamique de questions, envisagez d'utiliser une requête SQL dynamique basée sur les questions disponibles.
  • Utilisez le lien de démonstration SQLFiddle fourni dans le réponse pour une démonstration pratique.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn