Problema com SQL no FB
16/05/2008
0
Vejam minha SQL:
select first 1 skip 0 leitura.LEITURA_TOTAL from LEITURA where ((LEITURA.ID_CONTROLE = :Controle) and (LEITURA.FEITA_LEITURA = ´S´) and (extract(month from LEITURA.DATA_LEITURA) <= :mes) and (extract(YEAR from LEITURA.DATA_LEITURA) <= :ano)) ORDER by LEITURA.DATA_LEITURA desc
A lógica é que fosse pegar o maior registro de leitura existente em um determinado mês de um ano. Detalhe... minha primeira LEITURA foi em março, então no BD DATA_LEITURA = 26/03/2008, onde teria CONTROLE 781, mês = 3 e ano = 2008, só que o resultado é Nill. Se tiro a pesquisa por mês e ano, ele encontra um valor, mas dai já pega o valor do mês de abril, que ainda não quero.
Baseado na SQL acima... como vou conseguir pegar o maior registro existente em uma data.... lembrando que pode ser a primeira ocorrência no BD.
Agradeço pelo help.
Att
Maikel
Posts
16/05/2008
Edineidaniel
Se vc quer pegar a maior leitor de um determinado mês do Ano não entendi o pq do ´´<=´
Testa a SQL assim:
select first 1 skip 0 leitura.LEITURA_TOTAL from LEITURA where ( (LEITURA.ID_CONTROLE = :Controle) and (LEITURA.FEITA_LEITURA = ´S´) and (extract(month from LEITURA.DATA_LEITURA) = :mes) and (extract(YEAR from LEITURA.DATA_LEITURA) = :ano) ) ORDER by LEITURA.DATA_LEITURA desc
Testa ai e ve se isso funciona...
16/05/2008
Maikel
O problema está no extract... mas como resolver?
Att
16/05/2008
Edineidaniel
Faz mais um teste....
somente para ver se desta forma retorna registros:
select (extract(YEAR from LEITURA.DATA_LEITURA) as ANO, (extract(month from LEITURA.DATA_LEITURA) as MES, max(leitura.LEITURA_TOTAL) as LEITURA from LEITURA where ( (LEITURA.ID_CONTROLE = :Controle) and (LEITURA.FEITA_LEITURA = ´S´) ) GROUP by 1,2 ORDER by LEITURA.DATA_LEITURA desc
Fico no aguardo...
t+
Edinei
16/05/2008
Maikel
Muito estranho... o único registro que foi retornado é o mês 4, ano 2008 e valor da leitura para aquele mês... ai fui ver na tabela do BD... está lá bem certo um registro para dia 26/03/2008 com valor da leitura... mas esse registro não aparece no select...
O FB tem bug?
Vlw
16/05/2008
Edineidaniel
Q coisa....
Lembra do sistema de biblioteca que desenvolvemos juntos...
Fiz a seguinte SQL (para ver se o FB estava com bug...)
SELECT (extract(YEAR from RESERVAS.DATRESERVA)) as ANO, (extract(month from RESERVAS.DATRESERVA)) as MES, MAX(RESERVAS.CODEXEMPLAR) FROM RESERVAS WHERE (extract(YEAR from RESERVAS.DATRESERVA)) = 2008 GROUP BY 1,2
Retornou os registros certinho....
Dai não sei o que pode se....
t+
Edinei
16/05/2008
Maikel
Tenho que levar em consideração o ID_CONTROLE... ai mudei a SQL para a seguinte:
SELECT (extract(YEAR from LEITURA.DATA_LEITURA)) as ANO, (extract(month from LEITURA.DATA_LEITURA)) as MES, MAX(LEITURA.LEITURA_TOTAL) FROM LEITURA WHERE (extract(YEAR from LEITURA.DATA_LEITURA)) = 2008 and LEITURA.ID_CONTROLE = 801 GROUP BY 1,2
Mas retorna só o mês 04....
Existe uma outra forma de fazer isso, comparando datas sem utilizar Extract Month ou Extract Year?
Att
17/05/2008
Parosan