How to count number of consecutive events matching status of last event?
Here's one solution. Not very efficient I'm afraid:

SELECT 
    t.Controller,
    MIN(t.ExecutionTime) AS FirstFaultInSeries,
    MAX(t.ExecutionTime) AS LatestFault,
    COUNT(*) AS CntFaults
FROM
  ( SELECT 
        Controller, 
        COALESCE(MAX(CASE WHEN Result = 0 THEN ExecutionTime END)
                ,'19000101')
          AS LatestGood
    FROM t    
    GROUP BY Controller
  ) g
  JOIN t
    ON t.Controller = g.Controller
   AND t.ExecutionTime &gt; g.LatestGood
GROUP BY
    t.Controller ;


Tested: Fiddle

And another:

WITH cte AS
  ( SELECT 
        Controller, ExecutionTime, Result,
        ROW_NUMBER() OVER (PARTITION BY Controller
                           ORDER BY ExecutionTime DESC
                          )
          AS Rn,
        ROW_NUMBER() OVER (PARTITION BY Controller, Result
                           ORDER BY ExecutionTime DESC
                          )
          AS RnResult
    FROM t
  ) 
SELECT 
    Controller,
    MIN(ExecutionTime) AS FirstFaultInSeries,
    MAX(ExecutionTime) AS LatestFault,
    COUNT(*) AS CntFaults
FROM
    cte 
WHERE
    Result = 1
  AND
    Rn = RnResult
GROUP BY
    Controller ;