On Tue, Dec 1, 2020 at 11:50 AM Luis Fernando Ortiz Vera <lfernandor...@gmail.com> wrote: > > > Cordial saludo, aprciada comunidad, tengo la sigiuiente columna, que > consolida cifras por Meses, este nombre de mes es en español > > SELECT > to_char(to_timestamp (CAST(date_part('month', > public.detallelabor.fechalabor) AS text), 'MM'), 'TMMonth') as mes, > SUM( case when tipolabor.id_material = 1 then detallelabor.cantidad else 0 > end ) as carbon > FROM > detallelabor > INNER JOIN asignacionminero ON (detallelabor.id_asignacionminero = > asignacionminero.id_asignacion_labon) > INNER JOIN labor ON (asignacionminero.id_labor = labor.id_labor) > INNER JOIN tipolabor ON (labor.id_tipo_labor = tipolabor.id_tipo_labor) > WHERE > EXTRACT( MONTH FROM date( public.detallelabor.fechalabor ) ) BETWEEN 4 and > 10 > GROUP BY 1 > ORDER BY mes ASC > > Y me retorna el siguientes resultado > mes carbon > Agosto 93 > Julio 85 > Junio 50 > Mayo 76 > Octubre 237 > Septiembre 181 >
a mi me parece correcto ese resultado, porque le estas pidiendo ordenar cadenas de texto así que lo hace en orden alfabetico > Problema: No me esta ordenando por mes de forma ascendente. > y por qué lo haría? estás ordenando el resultado de to_char() que es texto, no fecha así que lo ordena como texto. si lo quieres ordenar por mes usa "ORDER BY public.detallelabor.fechalabor" aunque quizá debas agregarlo al GROUP BY? espero que no pero si tienes que agregarlo al GROUP BY podría servirte "ORDER BY date_part('month', public.detallelabor.fechalabor)" PS: tu consulta se ve muy rara: - para que conviertes el resultado del date_part() a texto lo devuelves a timestamp y luego de nuevo a texto con to_char()? - por qué usas date_part() en una parte de la consulta y extract() en otra, aunque en realidad son la misma función por lo que no hay mayor problema usar un mismo estilo, formato o estándar hace la consulta más legible -- Jaime Casanova Professional PostgreSQL: Soporte 24x7 y capacitación