[firebase-br] SQL (complexa)

Hélio Oliveira hpensador em gmail.com
Ter Maio 11 13:09:55 -03 2010


Boa tarde Colegas!

Não estou conseguindo chegar a um resultado satisfatório para obter um 
determinado valor em uma consulta.

Tenho uma tabela "TESTE" com os seguintes campos:
matricula integer,
data_inicio date,
data_final date,
valor numeric(14,2)

A mesma esta populada com os seguinte valores
matricula   data_inicio    data_final   valor
   10        02/01/2009     30/06/2009   500,00
   10        01/07/2009     30/11/2009   650,00
   10        01/12/2009       <null>     800,00

O que preciso:
Se o mês informado estiver compreendido entre 1/2009 e 6/2009 o valor 
retornado seja 500,00;
Se o mês informado estiver compreendido entre 7/2009 e 11/2009 o valor 
retornado seja 650,00;
Se o mês informado for 12/2009 ou maior o valor retornado seja 800,00;

Estou tentando com a seguinte SQL mais o resultado não é satisfatório, 
pois em alguns meses são retornados todos os registros.

select x.*
from teste x
where x.matricula = 10
   and (((extract(month from x.data_inicio) = :mes
   and    extract(year  from x.data_inicio) = :ano)
    or   (extract(month from x.data_inicio) <= :mes
   and    extract(year  from x.data_inicio) >= :ano)))

-- 
[]'s,

Hélio Oliveira
Analista de Sistemas
Delphi Developer
http://hpensador.blogspot.com/





Mais detalhes sobre a lista de discussão lista