Так как вы работаете с реляционной базой данных, то набор столбцов (a,b,c,d) должен быть определен заранее.
Сходу могу предложить такой способ решения вашей задачи:
SELECT 
  t.date,
  SUM(t.a),
  SUM(t.b) 
FROM
  (
   SELECT `date`, cnt AS a, 0 AS b
   FROM
     `table` 
   WHERE `name` = 'a'    
   UNION
   SELECT `date`, 0 AS a, cnt AS b
   FROM
     `table` 
   WHERE `name` = 'b'
   ) t 
GROUP BY t.date 
        
В принципе для c,d,e и т.д. можно до-генерировать запрос автоматически. Но работать такой запрос будет не очень быстро. Для какой нибудь админки куда заходят раз в день посмотреть отчет — нормально. Для часто посещаемой страницы возможно стоит пересмотреть логику?