On 11/10/2011 09:41, Dickson S. Guedes wrote:
> Em 11 de outubro de 2011 09:39, Thiago<zan...@farmaponte.com.br>  escreveu:
>> Pessoal, resolvi colocando a seguinte cláusula no where:
>>
>> (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') = TO_CHAR(SYSDATE,'MM') AND
>> TO_CHAR(P.PES_DT_NASCIMENTO,'DD')>= TO_CHAR(SYSDATE,'DD')) OR
>>     (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') =
>> TO_CHAR(ADD_MONTHS(SYSDATE,1),'MM')) OR
>>     (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') =
>> TO_CHAR(ADD_MONTHS(SYSDATE,2),'MM'))
>
> Quase! Tente usar 'extract'!

Consegui, aqui fica o SQL para que precisar:

SELECT *
FROM (
SELECT
     P.PES_IN_CODIGO,
     C.COL_IN_CODIGO,
     P.PES_ST_NOME,
     TO_CHAR(P.PES_DT_NASCIMENTO,'DD/MM') AS PES_ST_ANIV,
     CASE
        WHEN TO_CHAR(P.PES_DT_NASCIMENTO,'MM') < TO_CHAR(SYSDATE,'MM') 
THEN TO_CHAR(ADD_MONTHS(SYSDATE,12),'YYYY') || 
TO_CHAR(P.PES_DT_NASCIMENTO,'MMDD')
         ELSE TO_CHAR(SYSDATE,'YYYY') || TO_CHAR(P.PES_DT_NASCIMENTO,'MMDD')
     END AS PES_ST_ORDEM
FROM PESSOA P
LEFT JOIN COLABORADOR C ON P.PES_IN_CODIGO = C.PES_IN_CODIGO
WHERE
    (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') = TO_CHAR(SYSDATE,'MM') AND 
TO_CHAR(P.PES_DT_NASCIMENTO,'DD') >= TO_CHAR(SYSDATE,'DD')) OR
    (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') = 
TO_CHAR(ADD_MONTHS(SYSDATE,1),'MM')) OR
    (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') = 
TO_CHAR(ADD_MONTHS(SYSDATE,2),'MM')) OR
    (TO_CHAR(P.PES_DT_NASCIMENTO,'MM') = 
TO_CHAR(ADD_MONTHS(SYSDATE,3),'MM'))
)
ORDER BY PES_ST_ORDEM,PES_ST_NOME

Tive que fazer com um subselect para poder ordenar da próxima data em 
diante.

Obrigado a todos pela ajuda!


_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a