selection de 20 registros en 20

nelw
23 de Enero del 2006
como puedo hacer una seleccion de 20 registros en 20no se como hacerlo alguien puede ayudarme

Rodolfo Reyes
23 de Enero del 2006
Al hacer algun query puedes utilizar la columna ROWNUM, esta columna es una especie de correlativo que se le ponen a los datos antes de hacer el order by.

ejemplo

select codigo,nombre, rownum
from empleados
where rownum <= 20

Lo anterior te devolvera los primeros 20 empleados.

El problema es que si le agregas un ORDER BY ya no funciona.

Ejemplo

select codigo,nombre, rownum
from empleados
where rownum <= 20
order by nombre

Ya que el numero de rownum lo genera antes de hacer el ordenamiento.

Pero existe un pequeño truco:

select codigo,nombre,rownum
from (select codigo,nombre
from empleados
order by nombre
)
where rownum < 20
/

Con lo anterior ya puedes utilizar el rownum y order by. El unico inconveniente, es que la anterior sintaxis (poner un query en el from y hacer un order by dentro de el ) no la soporta el Developer.


andrewsreid
23 de Enero del 2006
No entiendo muy bien tu pregunta porque no soy español pero ¿es éste lo que quieres hacer?

SQL> l
1 select distinct object_name
2 from dba_objects
3* where rownum < 21
SQL> /


OBJECT_NAME
------------------------------
BOOTSTRAP$
CDEF$
CLU$
CON$
C_FILE#_BLOCK#
C_OBJ#
C_USER#
FET$
FILE$
ICOL$
IND$


OBJECT_NAME
------------------------------
I_CDEF1
I_CON1
I_FILE#_BLOCK#
I_FILE1
I_FILE2
I_ICOL1
I_OBJ#
I_TS1
UNDO$

20 rows selected.

SQL>