declare @t table(AA int,BB varchar(20))
insert into @t select 1,rtrim('a ')
insert into @t select 2,rtrim('32')
insert into @t select 3,rtrim('ed')
insert into @t select 4,rtrim('b ')
insert into @t select 5,rtrim('pp')
insert into @t select 6,rtrim('a ')
insert into @t select 7,rtrim('9 ')
insert into @t select 8,rtrim('b ')
insert into @t select 9,rtrim('k ')
select
c.*
from
@t c,
(select
a.AA a1,min(b.AA) a2
from
(select AA from @t where BB='a') a,
(select AA from @t where BB='b') b
where
a.AA<b.AA
group by
a.AA) d
where
c.AA between d.a1 and d.a2
order by
c.AA
/*
AA BB
----------- -------
1 a
2 32
3 ed
4 b
6 a
7 9
8 b
*/