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

Responder a