• An this is slightly faster again, by avoiding the string comparison ( = 'Friday'):

    SELECT

    YEAR(DATEADD(mm,N-1,'17530113')),

    COUNT(*)

    FROM

    dbo.Tally

    WHERE

    N < DATEDIFF(mm,'17530113','99990101')

    AND

    (DATEPART(dw,DATEADD(mm,N-1,'17530113')) + @@DATEFIRST) % 7 = 6

    GROUP BY

    YEAR(DATEADD(mm,N-1,'17530113'))

    HAVING

    count(*) = 3

    ORDER BY

    YEAR(DATEADD(mm,N-1,'17530113'))