Una forma de cambiar el orden de lo que te regresa un query es usando la funcion decode.
Imaginemos que tenemos la siguiente tabla
create table CAT_MASCOTA
(
id_mascota decimal(10) ;
nombre_mascota varchar(20);
) ;
insert into CAT_MASCOTA ( id_mascota, nombre_mascota) values ( 1, 'Perro');
insert into CAT_MASCOTA ( id_mascota, nombre_mascota) values ( 2, 'Gato');
insert into CAT_MASCOTA ( id_mascota, nombre_mascota) values ( 3, 'Perico');
insert into CAT_MASCOTA ( id_mascota, nombre_mascota) values ( 4, 'Raton');
insert into CAT_MASCOTA ( id_mascota, nombre_mascota) values ( 5, 'Hamster');
Si ejecutas:
select * from CAT_MASCOTA order by id_mascota;
Te dara las mascotas en el orden tal cual los hemos insertado. Imaginemos que queremos que nos regrese primero el GATO luego el PERICO, luego el RATON, luego el PERRO y al final el HAMSTER
Esto nos indicaria el siguiente orden (pongo el id de la mascota y luego el orden en que quiero que aparezca)
2 ->1
3->2
4->3
1->4
5->5
Luego entonces usando la funcion decode en el order by obtenemos los registros en el orden que queremos:
select * from CAT_MASCOTA order by decode( id_mascota,
2, 1
3, 2
4, 3
1, 4
5, 5 );
Esto me resulto util en una ocación reciente, lo pongo para no olvidarlo.
No hay comentarios:
Publicar un comentario