sql >> Base de Datos >  >> RDS >> Mysql

SQL - ¿Cómo transponer?

MySQL no es compatible con la sintaxis ANSI PIVOT/UNPIVOT, por lo que le permite usar:

  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

Como puede ver, las declaraciones CASE deben definirse por valor. Para hacer esto dinámico, debe usar Sintaxis de declaración preparada de MySQL (SQL dinámico) .