Обычно вы выполняете простое COUNT и GROUP BY RunName, но , который не будет показывать "нулевые результаты", как ошибки soo .
Это должно работать даже при нулевых результатах (на MySQL)
SELECT RunName, SUM(Result='fail')
FROM TableA
GROUP BY RunName;
Демо здесь .
Редактировать: Как указывает Аарон, это толькоработает на MySQL, это работает и на SQL Server;
SELECT RunName, SUM(CASE WHEN Result = 'fail' THEN 1 ELSE 0 END) as fails
FROM TableA
GROUP BY RunName
Демо здесь .
Edit2: Как отмечает Маркус, это может быть не очень благоприятно для индексаспособ выполнения запроса, поэтому, если у вас есть первичный ключ, вам лучше выполнить самостоятельное объединение со счетчиком / группой, чтобы получить правильный результат;
SELECT a.RunName, COUNT(b.Result)
FROM TableA a LEFT JOIN TableA b ON a.id=b.id AND b.Result='fail'
GROUP BY RunName
Демо здесь .