On 11/10/2011 09:41, Dickson S. Guedes wrote:
> Em 11 de outubro de 2011 09:39, Thiago<[email protected]> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral