Това е стандартна обобщена заявка:
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
За да го направите динамичен, трябва да използвате Динамичният SQL синтаксис на MySQL, наречен Prepared Statements
. Изисква две заявки - първата получава списък с characteristic_name
стойности, така че можете да свържете подходящия низ в CASE изразите, както виждате в моя пример като крайната заявка.