Как получить количество последовательностей, используемых в диапазоне в SQL? - PullRequest
1 голос
/ 04 ноября 2011

У меня есть таблица с рядом varchars, например:

0001
0002
0003
0007
0008
0010
0012
0013
0014
0015

Я хочу узнать, сколько последовательных чисел было использовано в диапазоне. Например:

RangeStart    RangeEnd    Count
0001          0003            3
0007          0008            2
0010          0010            1
0012          0015            4

Как я могу сделать это с помощью SQL-запроса?

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Это будет работать, если у вас есть только числа в качестве значений.

declare @T table(Col char(4))
insert into @T values
('0001'),
('0002'),
('0003'),
('0007'),
('0008'),
('0010'),
('0012'),
('0013'),
('0014'),
('0015')

;with C as
(
  select Col,
         Col - row_number() over(order by Col) as grp
  from @T
)
select min(Col) as RangeStart,
       max(Col) as RangeEnd,
       count(*) as [Count]
from C
group by grp
0 голосов
/ 04 ноября 2011

IMO, я не думаю, что это что-то, что SQL будет очень хорошо делать.Я бы сделал это с помощью кода, или если он должен быть в базе данных с использованием хранимой процедуры .Net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...