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

Ordenar Por Dias (ORDER BY)

Estas en el tema de Ordenar Por Dias (ORDER BY) en el foro de PostgreSQL en Foros del Web. Cordial Saludo, Seré breve, la situación es la siguiente, tengo una tabla llamada clases, cuyos campos son: 1. día 2. hora 3. materia #. etc... ...
  #1 (permalink)  
Antiguo 21/05/2011, 15:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Ordenar Por Dias (ORDER BY)

Cordial Saludo,

Seré breve, la situación es la siguiente, tengo una tabla llamada clases, cuyos campos son:
1. día
2. hora
3. materia
#. etc...
  • El campo dia, es un varchar(10) con un CHECK (dia in ('Lunes','Martes','Miércoles','Jueves','Viernes')) .
  • El campo hora es un integer.

La idea es hacer la consulta SQL de tal forma que los resultados salgan ordenados por dia y luego por hora... algo como:

Código SQL:
Ver original
  1. SELECT C.dia, C.hora, C.materia FROM Clases AS C ORDER BY 1,2;

Pero esta consulta los ordena alfabéticamente, es decir, primero queda Jueves y luego el resto de días: (Jueves, Lunes, Martes, Miércoles, Viernes). y la idea es que coloque al Lunes de primero, (osea: Lunes, Martes....).

Me gustaría saber si hay alguna forma de establecer el orden personalizado desde el SQL, dado que ya se los posibles valores que puede tener.

Nota: una solución que se me ocurrió fue reemplazar los días por números (Lunes = 1, Martes = 2, ...). pero no me gustaría tener que hacerlo asi, ademas de que quede con la duda de si lo que necesito se puede.

He buscado un poco en Internet, pero no he encontrado solución alguna.
  #2 (permalink)  
Antiguo 23/05/2011, 07:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Ordenar Por Dias (ORDER BY)

La solución es utilizar case en el ordenamiento.

ORDER BY CASE WHEN c.dia = 'Lunes' THEN 1,WHEN c.dia='Martes' THEN 2 .... END,2;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: dias, order
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 20:51.