Dit is een standaard pivot-query:
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
Om het dynamisch te maken, moet je gebruiken MySQL's dynamische SQL-syntaxis genaamd Prepared Statements
. Het vereist twee queries - de eerste krijgt een lijst van de characteristic_name
waarden, zodat u de juiste tekenreeks in de CASE-expressies kunt samenvoegen, zoals u in mijn voorbeeld ziet als de ultieme query.