Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: SQL Question - Ranges of Sequences
Eddie <edawad_at_hotmail.com> wrote in message news:7ne3bt$73l$1_at_nnrp1.deja.com...
> Hi everybody, I would like your help on this query.
> I have a table:
> Create table test_table (id number, description varchar2 (20));
> with the following rows:
> Insert into table test_table values (1,'D1');
> Insert into table test_table values (2,'D1');
> Insert into table test_table values (3,'D1');
> Insert into table test_table values (4,'D2');
> Insert into table test_table values (7,'D2');
> Insert into table test_table values (8,'D2');
> Insert into table test_table values (20,'D3');
> Insert into table test_table values (21,'D3');
> Insert into table test_table values (22,'D3');
> Insert into table test_table values (23,'D4');
> Insert into table test_table values (30,'D4');
> commit;
>
> I want the result to look like this:
>
> from to description count
> --------------------------------------
> 1 3 D1 3
> 4 4 D2 1
> 7 8 D2 2
> 20 22 D3 3
> 23 23 D4 1
> 30 30 D4 1
I think it could be a candidate for a SQL puzzle. I have riddled it.
SQLWKS> select id-level+1 as "from", 2> min(id)+max(level)-1 as "to", 3> description, 4> max(level) as "count" 5> from test_table m 6> start with not exists ( 7> select * from test_table 8> where id=m.id-1 and description=m.description) 9> connect by prior id=id-1 10> and prior description=description 11> group by id-level, description 12> from to DESCRIPTION count ---------- ---------- -------------------- ---------- 1 3 D1 3 4 4 D2 1 7 8 D2 2 20 22 D3 3 23 23 D4 1 30 30 D4 16 rows selected. Received on Mon Jul 26 1999 - 08:55:18 CDT
![]() |
![]() |