• How about this?

    ; with diffenrentiator as

    (

    SELECT s.Rowid sRowID, s.SRC sSRC , s.OrgNo sOrgNo , s.Sdate sSate

    ,s.Edate sEdate , t.*,

    case when DATEDIFF(dd, s.edate , t.Sdate) <> 1

    then 1

    else 0

    end indicator

    FROM @holdTable s

    LEFT JOIN @holdTable t

    ON t.Rowid = s.Rowid +1

    AND s.Orgno = t.Orgno

    AND s.SRC = t.SRC

    ),

    sequenced As

    (

    select sRowid , sSRC, sORgNo , sSate,

    coalesce( Edate ,sEdate ) Edate,

    rndiff = srowid - ROW_NUMBER() over(partition by sSRC , SoRGNO , indicator order by sRowid)

    from diffenrentiator

    where indicator <> 1

    )

    select sSRC, sORgNo , MIN( sSate) StartDate , MAX(Edate) EndDate

    from sequenced

    GROUP BY

    sSRC, sORgNo , rndiff