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

Crea un risultato di riepilogo con una query

Questa è una query pivot standard:

  SELECT uc.uut_sn,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_1' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_1,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_2' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_2,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_3' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_3,
    FROM unit_characteristics uc
GROUP BY uc.uut_sn

Per renderlo dinamico, devi utilizzare La sintassi SQL dinamica di MySQL chiamata Prepared Statements . Richiede due query:la prima ottiene un elenco del characteristic_name valori, quindi puoi concatenare la stringa appropriata nelle espressioni CASE come vedi nel mio esempio come la query finale.