Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Campo calculado para ordenar query??

Estas en el tema de Campo calculado para ordenar query?? en el foro de Oracle en Foros del Web. Hola, tengo que ordenar los resultados de una query según uno de los campos de la query, pero es un orden que no es alfabético. ...
  #1 (permalink)  
Antiguo 03/11/2010, 06:14
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Pregunta Campo calculado para ordenar query??

Hola, tengo que ordenar los resultados de una query según uno de los campos de la query, pero es un orden que no es alfabético.

El campo se llama "estado" y contiene una clave que uso para sacar el nombre del estado de otra tabla que se llama estados.

No puedo cambiar ni las ids de los estados ni su nombre, con lo que había pensado hacer el order by con un campo calculado, pero no sé muy bien como...

Debo ordenar por estados de esta manera: (indico ids y descripcion, vamos, la estructura de la tabla estados)
1 Pendiente
7 Pendiente Inf
6 Pendiente Rev
3 Paralizado
8 Paralizado inf
4 Devuelto

¿Alguna idea de cómo hacerlo?
  #2 (permalink)  
Antiguo 03/11/2010, 10:00
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Campo calculado para ordenar query??

Buenos días diminuta79:

Puedes hacer un decode en la sección Order by para asignarle el orden que quieras algo como esto:

Código SQL:
Ver original
  1. --Creamos una tabla de ejemplo
  2. CREATE TABLE ejemplo_estados (id INT, descripcion VARCHAR(20));
  3.  
  4. --insertamos los valores de los estados
  5. INSERT INTO ejemplo_estados VALUES (1, 'Pendiente');
  6. INSERT INTO ejemplo_estados VALUES (2, 'Otro Estado');
  7. INSERT INTO ejemplo_estados VALUES (3, 'Paralizado');
  8. INSERT INTO ejemplo_estados VALUES (4, 'Devuelto');
  9. INSERT INTO ejemplo_estados VALUES (5, 'Un Estado más');
  10. INSERT INTO ejemplo_estados VALUES (6, 'Pendiente Rev');
  11. INSERT INTO ejemplo_estados VALUES (7, 'Pendiente Inf');
  12. INSERT INTO ejemplo_estados VALUES (8, 'Paralizado inf');
  13.  
  14. --Mostramos los registros ordenados por id
  15. SELECT * FROM ejemplo_estados ORDER BY id
  16.  
  17. --Mostramos los registros ordenados por descripcion
  18. SELECT * FROM ejemplo_estados ORDER BY descripcion
  19.  
  20. --Mostramos los registros en el orden especificado por nosotros
  21. SELECT * FROM ejemplo_estados ORDER BY decode(id,1,1,7,2,6,3,3,4,8,5,4,6);
  22.  
  23. ---Eliminamos la tabla de ejemplo
  24. DROP TABLE ejemplo_estados;

Si observas intencionalmente agregué dos estados adicionales (id 2 y id 5) estos deberán aparecer al final de la lista ya que al no incluirse en el decode se les asignará un null

Saludos y espero que te pueda servir de algo.
Leo.

Etiquetas: query, campos, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.