Maison > base de données > tutoriel mysql > Comment puis-je transposer des lignes en colonnes dans SQL à l'aide d'une requête pivot ?

Comment puis-je transposer des lignes en colonnes dans SQL à l'aide d'une requête pivot ?

Barbara Streisand
Libérer: 2025-01-03 04:25:42
original
822 Les gens l'ont consulté

How Can I Transpose Rows into Columns in SQL Using a Pivot Query?

SQL transpose les lignes en colonnes : une solution pivotée

En SQL, la transposition des lignes en colonnes est une technique utile pour remodeler les données tabulaires. Étant donné un tableau avec des lignes représentant des points de données et des colonnes représentant des variables, vous pouvez rencontrer des scénarios dans lesquels il est nécessaire de changer l'orientation des données.

Un de ces scénarios, tel que décrit dans la question, implique des tableaux avec des réponses et des questions. . Le but est de transposer les données de réponse dans un format en colonnes, où chaque question devient une colonne et la réponse de chaque utilisateur à cette question est affichée dans la ligne correspondante.

Pour réaliser cette transposition, vous pouvez utiliser une technique connue comme une « requête pivot ». L'instruction SQL suivante illustre une solution utilisant PostgresSQL :

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

Cette requête utilise l'agrégation conditionnelle pour regrouper et agréger les valeurs de réponse en fonction de l'ID de la question. Les instructions CASE extraient les réponses à chaque question et les attribuent à des colonnes spécifiques. La fonction MAX() est utilisée pour garantir que seule la dernière réponse pour chaque paire question-utilisateur est incluse.

Le résultat de cette requête ressemblera au format transposé souhaité, où l'ID de chaque utilisateur est répertorié dans le premier colonne, suivie d'une colonne pour chaque question qui contient la réponse de l'utilisateur (ou NULL si aucune réponse n'existe).

Cette requête pivot est une approche standard pour transposer des lignes en colonnes en SQL. Il fournit une solution efficace et flexible pour gérer dynamiquement un nombre arbitraire de questions et de combinaisons de réponses.

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