Group by specific value and return results in generated column
SELECT 
   object_id,
   (SELECT b1.value FROM below b1 WHERE b1.object_id=b0.object_id and b1.type='type1') as Type1,
   (SELECT b1.value FROM below b1 WHERE b1.object_id=b0.object_id and b1.type='type2') as Type2,
   (SELECT b1.value FROM below b1 WHERE b1.object_id=b0.object_id and b1.type='type3') as Type3
FROM below b0


https://dbfiddle.uk/?rdbms=mysql_8.0&amp;fiddle=98618f2a316933c6c73260b13e33f15c
or

SELECT 
  b0.object_id,
  b1.value as Type1,
  b2.value as Type2,
  b3.value as Type3
FROM below b0
LEFT JOIN below b1 ON b1.object_id=b0.object_id and b1.type='type1'
LEFT JOIN below b2 ON b2.object_id=b0.object_id and b2.type='type2'
LEFT JOIN below b3 ON b3.object_id=b0.object_id and b3.type='type3'


https://dbfiddle.uk/?rdbms=mysql_8.0&amp;fiddle=0437e739f9a9d4cd9923feae6ecd5593