On Sep 7, 10:26 am, Michael Moore <michaeljmo...@gmail.com> wrote:
> Sonty, I get an error with this. I replace your table name with t so I could
> use Benoit's data.
> Mike
>
> SELECT   xph2.l low, xph.l high
>     FROM t xph, t xph2
>    WHERE NOT EXISTS (SELECT l
>                        FROM t
>                       WHERE l = xph.l + 1)
>      AND NOT EXISTS (SELECT l
>                        FROM t
>                       WHERE l = xph2.l - 1)
>      AND (xph.l - xph2.l) + 1 = (SELECT COUNT (1)
>                                    FROM t
>                                   WHERE l <= xph.l AND l >= xph2.l)
> ORDER BY 1, 2
>                   *
> Error at line 9
> ORA-00904: "XPH2"."L": invalid identifier
>
> Script Terminated on line 1.
>
> ---------------------------------------------------------------------------­------------------------
>
>
>
> On Mon, Sep 7, 2009 at 1:18 AM, sonty <saurabh.zen...@gmail.com> wrote:
>
> > This is working for me:
>
> > SELECT  xph2.l low,xph.l high
> >           FROM test_temp xph, test_temp xph2
> >          WHERE NOT EXISTS (SELECT l
> >                              FROM test_temp
> >                             WHERE l = xph.l + 1)
> >            AND NOT EXISTS (SELECT l
> >                              FROM test_temp
> >                             WHERE l = xph2.l - 1)
> >            AND (xph.l - xph2.l)+1 =
> >                   (SELECT COUNT (1)
> >                      FROM test_temp
> >                     WHERE l <= xph.l
> >                       AND l >= xph2.l)
> > order BY 1,2
>
> > where table test_temp has column l.
>
> > Regards,
> > Sonty
>
> > On Sep 6, 10:25 pm, Michael Moore <michaeljmo...@gmail.com> wrote:
> > > In oracle you could create a "table function" which you use like this.
>
> > > select * from TABLE(mytab);
>
> > > where mytab is the name of a pl/sql function. That function must be in a
> > > pl/sql package. It can not be 'stand alone'.
>
> > > A google search on ORACLE,PLSQL,TABLE,FUNCTION should get you everything
> > you
> > > need to know. If not, write back.
>
> > > On Sun, Sep 6, 2009 at 5:43 AM, David Hart <david.john.h...@gmail.com
> > >wrote:
>
> > > > I would expect this:LBound     UBound
> > > > 1              2
> > > > 5              5
> > > > 7              8
> > > > 12            12
>
> > > > I'm more from a SQL Server background...  could I create a temporary
> > table,
> > > > fill it with the correct values and then return the result from a SPROC
> > or
> > > > function?
>
> > > > D.
>
> > > > On Sat, Sep 5, 2009 at 10:47 AM, Michael Moore <
> > michaeljmo...@gmail.com>wrote:
>
> > > >> This would probably best be solved procedurally. If you can come up
> > with a
> > > >> query that does it, it will probably be very ugly. Also, what result
> > would
> > > >> you expect in this case:
>
> > > >> 1
> > > >> 2
> > > >> 5
> > > >> 7
> > > >> 8
> > > >> 12
>
> > > >> ??
>
> > > >> Mike
>
> > > >> On Sat, Sep 5, 2009 at 6:49 AM, Dave Hart <david.john.h...@gmail.com
> > >wrote:
>
> > > >>> Hi,
> > > >>> I have a table which includes data like this:
>
> > > >>> SEQ
> > > >>> 1
> > > >>> 2
> > > >>> 3
> > > >>> 4
> > > >>> 8
> > > >>> 9
> > > >>> 10
> > > >>> 11
> > > >>> 12
> > > >>> 13
> > > >>> 20
> > > >>> 21
> > > >>> 22
> > > >>> 23
> > > >>> 24
>
> > > >>> I want to be able to write a query that displays the upper and lower
> > > >>> bounds of each range:
> > > >>> LBound    UBound
> > > >>> 1              4
> > > >>> 8              13
> > > >>> 20            24
>
> > > >>> I've found plenty of queries that find the start and end of the gaps
> > > >>> but none that display the start and end of the ranges.
>
> > > >>> Any help is appreciated.
>
> > > >>> Thanks,
> > > >>> Dave- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

You cannot do that without creating table 't' with a 'proper'
definition (one that matches sonty's example table).  This works:

SQL> create table t(l number not null);

Table created.

SQL>
SQL> insert into t values (1 );

1 row created.

SQL> insert into t values (2 );

1 row created.

SQL> insert into t values (3 );

1 row created.

SQL> insert into t values (4 );

1 row created.

SQL> insert into t values (8 );

1 row created.

SQL> insert into t values (9 );

1 row created.

SQL> insert into t values (10);

1 row created.

SQL> insert into t values (11);

1 row created.

SQL> insert into t values (12);

1 row created.

SQL> insert into t values (13);

1 row created.

SQL> insert into t values (20);

1 row created.

SQL> insert into t values (21);

1 row created.

SQL> insert into t values (22);

1 row created.

SQL> insert into t values (23);

1 row created.

SQL> insert into t values (24);

1 row created.

SQL> commit;

Commit complete.

SQL>
SQL> SELECT      xph2.l low, xph.l high
  2      FROM t xph, t xph2
  3     WHERE NOT EXISTS (SELECT l
  4                         FROM t
  5                        WHERE l = xph.l + 1)
  6       AND NOT EXISTS (SELECT l
  7                         FROM t
  8                        WHERE l = xph2.l - 1)
  9       AND (xph.l - xph2.l) + 1 = (SELECT COUNT (1)
 10                        FROM t
 11                        WHERE l <= xph.l AND l >= xph2.l)
 12  ORDER BY 1, 2;

       LOW       HIGH
---------- ----------
         1          4
         8         13
        20         24

SQL>


David Fitzjarrell
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to