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.