Maison >base de données >tutoriel mysql >Comment faire pivoter des lignes en colonnes dans SQL pour les réponses des utilisateurs ?

Comment faire pivoter des lignes en colonnes dans SQL pour les réponses des utilisateurs ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 17:01:42885parcourir

How to Pivot Rows into Columns in SQL for User Responses?

SQL Transpose les lignes en colonnes

La transposition de lignes en colonnes en SQL est une technique qui vous permet de convertir une table avec des données orientées lignes dans un tableau avec des données orientées colonnes. Cette technique est communément appelée pivotement.

Dans votre scénario spécifique, vous disposez de deux tableaux :

  • réponses : contient les réponses des utilisateurs aux questions.
  • questions : contient les questions réelles questions.

Votre objectif est de transposer le tableau « réponses » afin que les réponses de chaque utilisateur aux différentes questions apparaissent sous forme de colonnes plutôt que de lignes.

Étape par étape. Étape Solution :

Pour obtenir la transposition souhaitée, vous pouvez utiliser une combinaison de jointures et de conditions agrégation :

SELECT r.user_id,
       MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
       MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
       MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
FROM responses r
JOIN questions q ON q.id = r.question_id
GROUP BY r.user_id;

Explication :

  • La requête rejoint d'abord les tables "réponses" et "questions" sur la colonne "question_id", qui relie chaque réponse à sa question correspondante.
  • Il utilise ensuite l'agrégation conditionnelle avec la fonction MAX() pour récupérer la réponse maximale valeur pour chaque combinaison utilisateur et question.
  • L'instruction CASE vérifie l'ID de la question et renvoie le corps de la réponse s'il correspond à l'ID.
  • Enfin, la clause GROUP BY regroupe les résultats par ID utilisateur. , en veillant à ce que les réponses de chaque utilisateur soient regroupées.

Exemple Résultat :

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
-------- | ------------------ | ------------------- | -------------------
1       | Yes                 | Yes                  | No
2       | Yes                 | No                   | No

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