SQL firebird - selecionar total de linhas por mês

Firebird

20/05/2008

Bom dia*

Preciso fazer um sql onde preciso retornar o total de um campo ordenado mês a mês....
minha tabela atendimento* tem um campo quantidade

select sum(at.quantidade)
from atendimento at
where cl.data between :pinicio and :pfim

preciso somar o total de quantidade no período informado, mas preciso retornar por mês (mes 1, mes 2,....)
o banco de dados é o firebird 1.5, e a função ´extract(month from cl.data)´ funciona para fazer comparações, mas se colocar
select sum(at.quantidade) ,extract(month from..
group by extract(month from ..
não compila......

Por favor, se alguém puder ajudar, agradeço desde já!!!
abraços


Lip

Lip

Curtidas 0

Respostas

Joaoshi

Joaoshi

20/05/2008

select EXTRACT(MONTH FROM DATA),sum(quantidade)
from atendimento
where data between :pinicio and :pfim
GROUP BY 1

Espero ter ajudado.


GOSTEI 0
Lip

Lip

20/05/2008

então joao
coloquei dessa forma..

select extract(month from data),sum(quantidade)
from cl_atendimentos
where situacao = 2
and data between :p1 and :p2
group by 1

mas segue mensagem de erro

´Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, char 9.
1.´
eu utilizo o firebird 1.5, num sei se tem mto a ver a versão que estou utilizando..


GOSTEI 0
Joaoshi

Joaoshi

20/05/2008

Colega, tente assim:

select extract(month from data),sum(quantidade)
from cl_atendimentos
where situacao = 2
and data between :p1 and :p2
group by extract(month from data)

Testei no Firebird 2.1


GOSTEI 0
Lip

Lip

20/05/2008

deu esse erro..

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, char 8.
extract.

deve ser a versão msm neh?


GOSTEI 0
Webjoel

Webjoel

20/05/2008

Olá!

O problema está no alias do extract, segue abaixo o sql correto:

select EXTRACT(MONTH FROM DATA) AS MES,sum(quantidade)
from atendimento
where data between :pinicio and :pfim
GROUP BY MES



GOSTEI 0
Martins

Martins

20/05/2008

Seguinte meu amigo, deixe seu SQL como abaixo.

select extract(month from data),sum(quantidade) 
from cl_atendimentos 
where situacao = 2 
and data between :p1 and :p2 
group by 1


Boa sorte e bons códigos.


GOSTEI 0
Lip

Lip

20/05/2008

tentativa 1 - Martins
select extract(month from data),sum(quantidade)
from cl_atendimentos
where situacao = 2
and data between :p1 and :p2
group by 1
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, char 8.
1.

tentativa 2 - WebJoel
select EXTRACT(MONTH FROM DATA) AS MES,sum(quantidade)
from cl_atendimentos
where data between :pinicio and :pfim
GROUP BY MES
msg. erro:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
MES.

ouvi falar que a versao do firebird tem a ver.... será q eh isso msm?


GOSTEI 0
Joaoshi

Joaoshi

20/05/2008

Colega, verifique a versão do FB (a última versão que utilizei era 1.5.3), se for alguma versão RC atualize.
Se nada funcionar você poderia postar aqui, a forma exata que esta passando a instrução SQL + a layout da tabela.


GOSTEI 0
Lip

Lip

20/05/2008

coloquei de todas as formas que me passaram até agora, e sempre da erro, (quando coloca 1 ou extract by) depois do group by...
[img]d:\imagem.JPG[/img]
achu q o print screen não vai junto, rs

ah, coloquei a versão 2.1 pra ver se dava certo tbm não compila... com os mesmos erros que eu postei antes


GOSTEI 0
Lip

Lip

20/05/2008

pessoal, vlw pelas dicas, os sqls funcionam, o problema é no banco..
tanto no banco que tento o sql quanto em outro banco mais simples que criei, o sql funciona em outros computadores, menos no que estou trabalhando...
criei um banco novo em um pc de casa e funcionou o sql, mas ao criar um banco novo aqui neste computador o sql não funcionou, msm estando com dialect 3...
não sei o que fazer, estou quase formatando essa máquina aki
obrigado pela ajuda, té+


GOSTEI 0
Webjoel

Webjoel

20/05/2008

Olá!

Eu fiz com Firebird 2.0, mas creio que o problema não esteja na versão, o que talvez esteja acontecendo é alguma dll do banco esteja corrompida, pegue em uma maquina que funciona as dll fbclient.dll ou gds32.dll e substitua neste computador que naum esta funcionando, de uma pesquisar e troque todas!

Boa sorte!


GOSTEI 0
Lip

Lip

20/05/2008

exatamente, o problema era o gds32.dll, pq tem aki o interbase e firebird instalados, e acabava utilizando o gds32.dll do interbase

renomeei o fcliente* para gds32.dll e substitui o arquivo existente, agora ja possibilita fazer as sqls

vlw galera, obrigado msm

xD


GOSTEI 0
POSTAR