select rownum , campo1, campo2 from tabla1
la salida sera algo así
1 campo1 campo2
2 campo1 campo2
3 campo1 campo2
4 campo1 campo2
Si queremos usar una consulta con un order by y que se muestre el número de columna podríamos usar esta consulta:
select rownum, campo1, campo2 from tabla1 order by campo1La salida no es lo que queremos:
1 campo1 campo2Si queremos que el número se corresponda con el orden podemos hacer esta consulta:
4 campo1 campo2
3 campo1 campo2
2 campo1 campo2
select rownum , campo1, campo2 from tabla1 , dual where tabla1.campo1 = dual.dummy(+)
order by campo1
1 campo1 campo2
2 campo1 campo2
3 campo1 campo2
4 campo1 campo2
Estamos realizando un "outer join" entre la tabla dual y la tabla1 usando como campo común el que deseamos para la ordenación. La salida estaŕa ordenada por el campo1 y los número serán correctos.
Si tenemos dos o más campos con los que se tiene que ordenar, podemos realizar una consulta dentro de otra:
select rownum, t1.* from (select campo1, campo2 from tabla1 ORDER BY campo1 , campo2) t1;
Si ,continuando con el caso anterior, tenemos una consulta con un Order by y queremos restringirlo a los N primeros registros podemos usar lo siguiente
Si esta es la consulta con la clausula order by:
select campo1, campo2 from tabla1 Order by campo1
Rodearemos la consulta con otro select y le aplicaremos la restricción en cuanto al número de columnas:
select * from (select campo1, campo2 from tabla1 Order by campo1) where rownum < 100
por regla general:
select * from ( tuconsulta) where rownum < 100
No hay comentarios:
Publicar un comentario