[firebase-br] Selecionar registro especifico

Nivaldo Martins nivaldomart em gmail.com
Sáb Jan 9 03:14:27 -03 2010


olá helio utilize o comando iif

select
   iif (:mes = 12, 800,iif(:mes<7,500,650)
from tabela
  where
   :mes = between extract(month from data_inicio) and extract(month from
data_final)
   and
   extract(year from data_inicio) = :ano
   and
   codigo = :cod


explicando o IIF ali faz o seguinte:
se o mês for igual a 12 retorna 800, se não for verifica se o mês é menor
que 7 (estará entre 1 e 6) e retorna 500, senão retorna 650 (indicativo que
o mês é maior que 7 e menor que 12 pois se chegar neste ponto mês não é
igual a 12)

como na sua estrutura o valor está armazenado

vc pode fazer assim:

select
   a. valor
from
  tabela a
where
  a.codigo = :cod
  and
  a.ano = extract(year from data_inicio)
  and
 (
  :mes = 12
  or
  :mes between extract(month from data_inicio) and extract(month from
data_final)
)

Espero ter ajudado

2010/1/8 Hélio Oliveira <hpensador em gmail.com>

> Boa tarde Colegas!
>
> Tenho uma tabela com a seguinte estrutura:
>
> codigo  data_inicio     data_final      valor
> 10      02/01/2009      30/06/2009      500,00
> 10      01/07/2009      31/11/2009      650,00
> 10      01/12/2009      null            800,00
>
> No select irei passar mês, ano e código como paramentros.
>
> Se o mês e ano for estiver compreendido entre [1..6] o valor retornado
> deverá ser 500,00
> Se o mês e ano for estiver compreendido entre [7..11] o valor retornado
> deverá ser 650,00
> Se o mês e ano for maior que 12/2009 o valor retornado deverá ser 800,00
>
> Montei o seguinte select mais em testes não estou obtendo o resultado
> satisfatório.
>
> select a.valor
> from teste a
> where (extract(month from a.data_inicio) <= :mes
>  and extract(year   from a.data_inicio) = :ano)
>  and a.codigo = :cod
>
>
> --
> []'s,
>
> Hélio Oliveira
> Analista de Sistemas
> Delphi Developer
> http://hpensador.blogspot.com/
> MSN - hpensador em hotmail.com
> Skype - hpensador
> (71) 9975-9176
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista