Osvaldo Kussama escreveu:
>> select * from t1;
>> ano | mes | codfun
>> ------+-----+--------
>> 2010 | 4 | 1593
>> 2010 | 4 | 1836
>> 2010 | 2 | 1836
>> 2010 | 4 | 2398
>> 2011 | 1 | 1836
>> 2012 | 3 | 1836
>> (6 rows)
>>
>> select min(ano),min(mes),codfun from t1 group by codfun;
>> min | min | codfun
>> ------+-----+--------
>> 2010 | 4 | 2398
>> 2010 | 4 | 1593
>> 2010 | 1 | 1836
>> (3 rows)
>>
>> __
>
>
> Usando uma particularidade do PostgreSQL (DISTINCT ON) e testando
> corretamente a data limite podemos ter:
>
> postgres=# SELECT * FROM t1;
> ano | mes | codfun
> ------+-----+--------
> 2010 | 4 | 1593
> 2010 | 4 | 1836
> 2010 | 2 | 1836
> 2010 | 4 | 2398
> 2011 | 1 | 1836
> 2012 | 3 | 1836
> 2010 | 1 | 1593
> 2011 | 1 | 9999
> (8 linhas)
>
> postgres=# SELECT DISTINCT ON (codfun) * FROM t1 WHERE
> to_date(ano::text || '-' || mes::text, 'YYYY-MM') >= to_date('201002',
> 'YYYYMM') ORDER BY codfun, ano, mes;
> ano | mes | codfun
> ------+-----+--------
> 2010 | 4 | 1593
> 2010 | 2 | 1836
> 2010 | 4 | 2398
> 2011 | 1 | 9999
> (4 linhas)
>
> Osvaldo
Por isso que eu adoro o postgre, tem sempre alguma coisa que facilite a
nossa vida.
Utilizando o distinct on funcionou corretamente.
Obrigado, e obrigado a todos que ajudaram.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral