Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL - Comment transposer ?

MySQL ne prend pas en charge la syntaxe ANSI PIVOT/UNPIVOT, ce qui vous laisse utiliser :

  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

Comme vous pouvez le voir, les instructions CASE doivent être définies par valeur. Pour rendre cela dynamique, vous devez utiliser Syntaxe de l'instruction préparée de MySQL (SQL dynamique) .