• I think this works:

    --first part gets events within the date range

    SELECTevt.*

    FROM dbo.#Events evt

    WHERE evt.ProcessDate BETWEEN @StartDate AND @EndDate

    --second part gets related events that occurred before

    UNION ALL

    SELECTPrior.*

    FROM (SELECT LinkRL4, MIN(ProcessDate) AS ProcessDate FROM dbo.#Events evt WHERE ProcessDate BETWEEN @StartDate AND @EndDate GROUP BY LinkRL4) AS MinDate

    CROSS APPLY (

    SELECT TOP 1 evt.*

    FROM dbo.#Events evt

    WHERE evt.LinkRL4 = MinDate.LinkRL4

    AND evt.ProcessDate < MinDate.ProcessDate

    ORDER BY evt.ProcessDate DESC) as Prior

    ORDER BY LinkRL4, ProcessDate, L4Ident