Você precisa de funções de concatenação como
CONCAT_WS()
e CONCAT
para concatenar as colunas de cada linha e depois agregar com GROUP_CONCAT()
para cada name
:SELECT CONCAT('[', GROUP_CONCAT(CONCAT('(', CONCAT_WS(',', name, device, passed, failed), ')')), ']') AS result
FROM results
GROUP BY name
Veja a demonstração .