Mysql
 sql >> Database >  >> RDS >> Mysql

SQL - Come trasporre?

MySQL non supporta la sintassi ANSI PIVOT/UNPIVOT, quindi puoi usare:

  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

Come puoi vedere, le istruzioni CASE devono essere definite per valore. Per rendere questo dinamico, dovresti usare Sintassi dell'istruzione preparata di MySQL (SQL dinamico) .