Maison >base de données >tutoriel mysql >Comment transposer des données en SQL à l'aide d'instructions CASE ?
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!