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

Откуда: г. Калуга
Сообщений: 1213
Есть таблица с данными(разделители для наглядности)
1 1
1 2
1 3
-------
1 6
-------
1 9
1 11
-------
2 1
2 2

есть ли возможность (и при помощи каких функций) запросом преобразовать это в вид

1 1-3
1 6-6
1 9-11
2 1-2

Т.е. показать диапазоны чисел, даже если этот "диапазон" состоит из одного числа
11 фев 14, 15:21    [15551768]     Ответить | Цитировать Сообщить модератору
 Re: Свернуть диапазоны  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
declare @t table ( a int, b int );
insert into @t
values (1,1), (1,2), (1,3), (1,6), (1,9), (1,11), (2,1), (2,2);

with cte
as
(
select b - row_number() over ( partition by a order by b ) i, * from @t
)
select a, convert( varchar, min(b) ) + '-' + convert( varchar, max(b) ) as b
from cte
group by a,i
order by a;
11 фев 14, 15:26    [15551804]     Ответить | Цитировать Сообщить модератору
 Re: Свернуть диапазоны  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
minva
1 9
1 11
Как определить, что это один диапазон?
11 фев 14, 15:29    [15551826]     Ответить | Цитировать Сообщить модератору
 Re: Свернуть диапазоны  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Knyazev Alexey,

Спасибо!!!
11 фев 14, 15:30    [15551833]     Ответить | Цитировать Сообщить модератору
 Re: Свернуть диапазоны  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
invm, я там ошибся, должно было быть 1 9, 1 10, 1 11
11 фев 14, 15:48    [15551976]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить