Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 из массивы выбрать диапазоны последовательных значений  [new]
Если
Member

Откуда:
Сообщений: 58
Добрый день!

Помогите пж-та с запросом.

Есть исходная:
-- creating table
create table #test (code int)

-- inserting test data
insert #test values(1)
insert #test values(2)
insert #test values(3)
insert #test values(4)
insert #test values(6)
insert #test values(8)
insert #test values(9)
insert #test values(10)

select * from #test


Нужен результат:
-- creating table
create table #test1 (code int, code1 int)

-- inserting test data
insert #test1 values(1,4)
insert #test1 values(6,6)
insert #test1 values(8,10)

select * from #test1


Огромное спасибо!
1 окт 09, 16:24    [7730724]     Ответить | Цитировать Сообщить модератору
 Re: из массивы выбрать диапазоны последовательных значений  [new]
Если
Member

Откуда:
Сообщений: 58
Т.е. нужно последовательные значения превратить в диапазоны.
Если значения отдельные (6), диапазон будет 6-6.
1 окт 09, 16:26    [7730732]     Ответить | Цитировать Сообщить модератору
 Re: из массивы выбрать диапазоны последовательных значений  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
select min(code), max(code)
  from (select code
              ,code - row_number() over(order by code) as grp
          from #test) as t
 group by grp

----------- -----------
1           4
6           6
8           10

(3 row(s) affected)
1 окт 09, 16:27    [7730744]     Ответить | Цитировать Сообщить модератору
 Re: из массивы выбрать диапазоны последовательных значений  [new]
Если
Member

Откуда:
Сообщений: 58
Паганель, спасибо огромное!

Сейчас разбираюсь как оно работает =)
1 окт 09, 16:39    [7730848]     Ответить | Цитировать Сообщить модератору
 Re: из массивы выбрать диапазоны последовательных значений  [new]
aleks2
Guest
Паганель
select min(code), max(code)
  from (select code
              ,code - row_number() over(order by code) as grp
          from #test) as t
 group by grp

----------- -----------
1           4
6           6
8           10

(3 row(s) affected)


Редкостная по тормознутости конструкция.
1 окт 09, 19:15    [7731682]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить