Ini adalah kueri pivot standar:
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
Untuk membuatnya dinamis, Anda perlu menggunakan Sintaks SQL dinamis MySQL disebut Pernyataan yang Disiapkan
. Ini membutuhkan dua kueri - yang pertama mendapatkan daftar characteristic_name
nilai, sehingga Anda dapat menggabungkan string yang sesuai ke dalam ekspresi CASE seperti yang Anda lihat dalam contoh saya sebagai kueri utama.