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
Libérer: 2025-01-05 17:01:42
original
912 Les gens l'ont consulté

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;
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal