Страница 1 из 1

Поиск непрерывных диапазонов

Добавлено: 15 окт 2005, 01:42
Lexid
Здравсвуйте!

есть такой код.

Код: Выделить всё

select grp, min (num), max (num)
  from (
    select grp, num, num - rownum grp1
    from (select * from ranges order by grp, num))
  group by grp, grp1 ;
Но он никак не хочет исполнятся.
Ругает

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 5.
select.

вроде всё ясно как должно исполняться. но не ясно почему не исполняеться.
Помогите пожалуйста.

Добавлено: 15 окт 2005, 01:47
hvlad
SELECT FROM SELECT (aka derived tables) есть только в FB2

Добавлено: 15 окт 2005, 02:55
Lexid

Код: Выделить всё

select
  t1.num, min(t2.num)
  from ranges t1 join ranges t2 on t1.num<= t2.num
where
  not exists (select num from ranges t3 where t1.num- 1 = t3.num)
  and
  not exists (select num from ranges t4 where t2.num+ 1 = t4.num)
group by t1.num
вот так еще можно. но как сунуть туда grp?
если написать так

Код: Выделить всё

select
  t1.num, min(t2.num),grp
  from ranges t1 join ranges t2 on t1.num<= t2.num
where
  not exists (select num from ranges t3 where t1.num- 1 = t3.num)
  and
  not exists (select num from ranges t4 where t2.num+ 1 = t4.num)
group by t1.num,grp
то выводит вообще чушь