CREATE TABLE #Temp (TNID INT, TN VARCHAR(20))INSERT INTO #TempSELECT 3011170, '4402787100'UNION ALL SELECT 3011170, '4402787101'UNION ALL SELECT 3011170, '4402787102'UNION ALL SELECT 3011170, '4402787103'UNION ALL SELECT 3011171, '4402787104'UNION ALL SELECT 3011171, '4402787105'UNION ALL SELECT 3011175, '4402787118'UNION ALL SELECT 3011175, '4402787119'UNION ALL SELECT 3011175, '4405165555'UNION ALL SELECT 3011175, '4405165556'UNION ALL SELECT 3011175, '4405165557'UNION ALL SELECT 3011175, '4405165558'UNION ALL SELECT 3011175, '4409447976'SELECT TNID, TNMIN=MIN(TN), TNMAX=MAX(TN)FROM #TempGROUP BY TNIDDROP TABLE #Temp
CREATE TABLE #Temp (TNID INT, TN BIGINT);INSERT INTO #TempSELECT 3011170, 4402787100UNION ALL SELECT 3011170, 4402787101UNION ALL SELECT 3011170, 4402787102UNION ALL SELECT 3011170, 4402787103UNION ALL SELECT 3011171, 4402787104UNION ALL SELECT 3011171, 4402787105UNION ALL SELECT 3011175, 4402787118UNION ALL SELECT 3011175, 4402787119UNION ALL SELECT 3011175, 4405165555UNION ALL SELECT 3011175, 4405165556UNION ALL SELECT 3011175, 4405165557UNION ALL SELECT 3011175, 4405165558UNION ALL SELECT 3011175, 4409447976;with rCTE as (select row_number() over (order by (select null)) rn, t1.TNID, t1.TNfrom #Temp t1 left outer join #Temp t2 on t1.TNID = t2.TNID and t1.TN = t2.TN + 1where t2.TNID is nullunion allselect rn, t1.TNID, t1.TNfrom #Temp t1 inner join rCTE t2 on t1.TNID = t2.TNID and t1.TN = t2.TN + 1)select TNID, min(TN) TN1, max(TN) TN2 from rCTE group by rn, TNID order by rn,TNID;godrop table #Temp;go
CREATE TABLE #Temp (TNID INT, TN BIGINT);INSERT INTO #TempSELECT 3011170, 4402787100UNION ALL SELECT 3011170, 4402787101UNION ALL SELECT 3011170, 4402787102UNION ALL SELECT 3011170, 4402787103UNION ALL SELECT 3011171, 4402787104UNION ALL SELECT 3011171, 4402787105UNION ALL SELECT 3011175, 4402787118UNION ALL SELECT 3011175, 4402787119UNION ALL SELECT 3011175, 4405165555UNION ALL SELECT 3011175, 4405165556UNION ALL SELECT 3011175, 4405165557UNION ALL SELECT 3011175, 4405165558UNION ALL SELECT 3011175, 4409447976;with basedata as (select TNID, TN, TN - row_number() over (order by TNID, TN) as grpfrom #Temp)select TNID, min(TN) as TN1, max(TN) as TN2from basedatagroup by grp, TNID;godrop table #Temp;go