Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
sql_user2 Member Откуда: Сообщений: 382 |
Например есть таблица с одним полем:1 2 3 4 5 7 8 9 Как из нее получить такое: 1 5 7 3 т.е. то 1 до конца неприрывного диапазона - пять строк, от семи до конца диапазона - три и т.д. |
16 май 17, 17:16 [20486110] Ответить | Цитировать Сообщить модератору |
iiyama Member Откуда: Сообщений: 642 |
sql_user2, LEAD если версия позволяет |
16 май 17, 17:25 [20486148] Ответить | Цитировать Сообщить модератору |
iiyama Member Откуда: Сообщений: 642 |
sql_user2, хотя так лучше declare @T1 table(id int) insert into @t1 values(1),(2),(3),(4),(5),(7),(8),(9) ;WITH C AS ( SELECT id, id - DENSE_RANK() OVER(ORDER BY id) AS grp FROM @T1 ) SELECT MIN(id) AS [1], MAX(id) AS [2] FROM C GROUP BY grp; |
16 май 17, 17:34 [20486191] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
sql_user2, разбаянистый-баян. RTFM инвариант группы. З.Ы. Разность между твоим <полем> и row_number() over(order by <поле>) |
16 май 17, 17:35 [20486198] Ответить | Цитировать Сообщить модератору |
iiyama Member Откуда: Сообщений: 642 |
iiyama, был невнимателен declare @T1 table(id int) insert into @t1 values(1),(2),(3),(4),(5),(7),(8),(9) ;WITH C AS ( SELECT id, id - DENSE_RANK() OVER(ORDER BY id) AS grp FROM @T1 ) SELECT MIN(id) AS [1], MAX(id) - MIN(id)+1 FROM C GROUP BY grp; |
16 май 17, 17:36 [20486202] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
ссылку вставить забыл |
||
16 май 17, 17:39 [20486213] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |