DECLARE @Temp TABLE(a int, b int)

--a表示开始数字,b表示结束数字,如第一条记录表示从0到33的数字

insert into @Temp (a,b) values (0,33)

insert into @Temp (a,b) values (16,46)

insert into @Temp (a,b) values (0,17)

insert into @Temp (a,b) values (0,21)

insert into @Temp (a,b) values (0,30)

insert into @Temp (a,b) values (30,67)

insert into @Temp (a,b) values (29,89)

insert into @Temp (a,b) values (63,89)

--如上数据,现在我要得到里面数字重叠的最大值,比如上面测试的数据这种情况,最大值会出现在30这个值上,第1,2,5,6,7条记录都包含了30,最大值是5


select top 1 with ties b.number,cnt=count(1)

from @Temp a

    join master..spt_values b

      on b.type='p' and b.number between a.a and a.b

group by b.number

order by cnt desc

/*

number      cnt

----------- -----------

30          5

16          5

17          5

(3 行受影响)

*/