• Using Jeff Moden's article http://www.sqlservercentral.com/articles/T-SQL/71550/ about Group Islands of Contiguous Dates as inspiration, you could do the following

    ;WITH cte AS (

    SELECT name,

    DATEADD(mm, - ROW_NUMBER() OVER (ORDER BY name, saledate), saledate) dategroup,

    saledate

    FROM #sales

    WHERE quantity > 2

    )

    SELECT name, MIN(saledate) firstsaledate, COUNT(*) cnt

    FROM cte

    GROUP BY name, dategroup

    ORDER BY name, dategroup