Toto je standardní pivotní dotaz:
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
Aby to bylo dynamické, musíte použít Dynamická syntaxe SQL MySQL s názvem Připravené příkazy
. Vyžaduje dva dotazy – první získá seznam characteristic_name
hodnoty, takže můžete zřetězit příslušný řetězec do výrazů CASE, jak vidíte v mém příkladu jako konečný dotaz.