Dette er en standard pivotforespørgsel:
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
For at gøre det dynamisk, skal du bruge MySQLs dynamiske SQL-syntaks kaldet Prepared Statements
. Det kræver to forespørgsler - den første får en liste over characteristic_name
værdier, så du kan sammenkæde den passende streng i CASE-udtrykkene, som du ser i mit eksempel som den ultimative forespørgsel.