Detta är en vanlig pivotfråga:
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
För att göra det dynamiskt måste du använda MySQL:s dynamiska SQL-syntax som kallas Prepared Statements
. Det kräver två frågor - den första får en lista med characteristic_name
värden, så att du kan sammanfoga den lämpliga strängen i CASE-uttrycken som du ser i mitt exempel som den ultimata frågan.