drop table #tmp
Create table #Tmp(编号 int,类型 char(1))
INSERT INTO #Tmp values(1,'a')
INSERT INTO #Tmp values(2,'a')
INSERT INTO #Tmp values(3,'b')
INSERT INTO #Tmp values(4,'b')
INSERT INTO #Tmp values(5,'a')
INSERT INTO #Tmp values(6,'a')
INSERT INTO #Tmp values(7,'c')
INSERT INTO #Tmp values(8,'c')
Select Min(开始编号)as 开始编号
,结束编号 = case when 结束编号 is null then (Select Max(编号) From #Tmp) else 结束编号 end
,类型 from
(Select 编号 as 开始编号
,(Select Top 1 编号 from #Tmp where 编号>=a.编号 And 类型<>a.类型 Order By 编号 ) - 1 as 结束编号
,类型 From #Tmp a ) aa
group by 结束编号,类型
order by 开始编号
结果
1 2 a
3 4 b
5 6 a
7 8 c
哈哈,总算想到了,楼主给分