Dies ist eine Standard-Pivot-Abfrage:
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
Um es dynamisch zu machen, müssen Sie verwenden MySQLs dynamische SQL-Syntax namens Prepared Statements
. Es erfordert zwei Abfragen - die erste erhält eine Liste des characteristic_name
Werte, sodass Sie die entsprechende Zeichenfolge in die CASE-Ausdrücke verketten können, wie Sie es in meinem Beispiel als ultimative Abfrage sehen.