これは標準のピボットクエリです:
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
動的にするには、を使用する必要があります。プリペアドステートメントと呼ばれるMySQLの動的SQL構文
。 2つのクエリが必要です。最初のクエリはcharacteristic_name
のリストを取得します 値なので、最終的なクエリとして私の例で見られるように、適切な文字列をCASE式に連結できます。