2012/8/29 Osvaldo Kussama <[email protected]> > Em 29/08/12, Edson Lidorio<[email protected]> escreveu: > > Só ordena, no ano atual > > veja como aparece: > > > > 3/2012 > > 4/2010 > > 4/2012 > > 5/2012 > > 6/2011 > > 6/2012 > > 7/2012 > > 8/2012 > > > > > Mas você está usando ORDER BY date_trunc('month', a.dt_mov);? > O comportamento acima não é o usual na ordenação de um campo date. > Me parece que você está ordenando por to_char(a.dt_mov, 'MM/YYYY'). > > Osvaldo, na verdade é sim, veja que se usar `ORDER BY date_trunc('month', a.dt_mov);` apenas o mês será considerado na ordenação, logo todo mês de Junho (inteiro 6), por exemplo, vai ficar junto independente do ano que seja (2011, 2012, etc.), porque o ano não foi considerado. Logo a ordenação tem que considerar o mês e o ano, sendo que o ano deve vir antes (ou o mesmo problema acontecerá), e temos, é claro, várias formas de fazer isso, como:
* ORDER BY to_char(a.dt_mov, 'YYYYMM') * ORDER BY extract(year from a.dt_mov), extract(month from a.dt_mov) (e a variante com date_trunc, mesma coisa) Ambas já apresentadas aqui, e só deve-se tomar cuidado que o que aparece no ORDER BY tem, *obrigatóriamente*, que aparecer no GROUP BY, ou o PostgreSQL vai apresentar um erro. Atenciosamente, -- Matheus de Oliveira
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
