Maison >base de données >tutoriel mysql >Comment transposer des données en SQL à l'aide d'instructions CASE ?

Comment transposer des données en SQL à l'aide d'instructions CASE ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 04:36:39764parcourir

How to Transpose Data in SQL Using CASE Statements?

Transposer des données dans une table SQL à l'aide d'instructions de cas

En SQL, la transposition de données fait référence à la conversion d'un ensemble de données dans lequel les lignes et les colonnes sont permutées. Pour transposer un tableau avec une structure similaire à celle fournie :

Id UserId FieldName FieldValue
1 100 Username John Doe
2 100 Password pass123!
3 102 Username Jane
4 102 Password $ecret
5 102 Email Address [email protected]

dans une forme transposée :

UserId Username Password Email Address
100 John Doe pass123!
102 Jane $ecret [email protected]

Une approche consiste à utiliser plusieurs instructions CASE avec des clauses group by :

SELECT t.userid
       MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
       MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
       MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
  FROM TABLE t
GROUP BY t.userid

Cette requête calcule la valeur maximale pour chaque combinaison d'utilisateur et de champ. Les instructions CASE définissent la valeur de champ à renvoyer en fonction de la valeur du champ FieldName.

Cependant, cette méthode nécessite de définir des instructions CASE pour chaque nom de champ spécifique. Pour une solution dynamique, envisagez d'utiliser la syntaxe Prepared Statement (SQL dynamique) de MySQL pour générer la requête.

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