Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL - Como transpor?


O MySQL não suporta a sintaxe ANSI PIVOT/UNPIVOT, então deixe você 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 você pode ver, as instruções CASE precisam ser definidas por valor. Para tornar isso dinâmico, você precisa usar Sintaxe da instrução preparada do MySQL (SQL dinâmico) .