Agrupar por Mês e Ano com SQL no Paradox???

Delphi

13/05/2004

Pessoal,

Na tabela tenho um campo DATA_MOV e estou precisando fazer uma consulta no banco Paradox que agrupe por mês e ano a quantidade de movimentação.
Ex. Tenho uma série de movimentos entrada/saida de 2003 e 2004, preciso gerar um gráfico de evolução (barras) por mês e ano (12/2003, 01/2004, 02/2004, 03/2004...) informando a quantidade de registro (count) de cada mês (01/2004 = 40, 02/2004 = 35).

O comando que tentei usar está dando erro no Paradox.

SELECT DATA_MOV, COUNT(MOV) AS TOTAL FROM T_MOVIMENTACAO GROUP BY EXTRACT(MONTH FROM DATA_MOV), EXTRACT(YEAR FROM DATA_MOV).

O que tem de errado nisso?

Obrigado.


Ads

Ads

Curtidas 0

Respostas

Adilsond

Adilsond

13/05/2004

Como é que voce vai mostrar uma data se voce está agrupando pela mes/ano da mesma ?????

SELECT EXTRACT(MONTH FROM DATA_MOV) AS MES_MOV,
EXTRACT(YEAR FROM DATA_MOV) AS ANO_MOV,
COUNT(MOV) AS TOTAL
FROM T_MOVIMENTACAO
GROUP BY EXTRACT(MONTH FROM DATA_MOV),
EXTRACT(YEAR FROM DATA_MOV)


GOSTEI 0
Ads

Ads

13/05/2004

Deu erro ! ´Capability Supported´

Estou usando banco Paradox.


GOSTEI 0
Adilsond

Adilsond

13/05/2004

Isto ocorre porque o BDE não aceita o extract no group by. Para reseolver o problema, faça o seguinte:

1 - Salve a query abaixo no mesmo diretório que se encontra a sua tabela, com a extensão .sql

Ex: MinhaConsulta.sql

SELECT EXTRACT(MONTH FROM DATA_MOV) AS MES_MOV, 
EXTRACT(YEAR FROM DATA_MOV) AS ANO_MOV, MOV
FROM T_MOVIMENTACAO


2 - Utilize sua query (View) para a consulta seguinte:

SELECT MES_MOV, ANO_MOV, COUNT(MOV) AS TOTAL 
FROM MinhaConsulta.sql
GROUP BY MES_MOV, ANO_MOV



GOSTEI 0
Ads

Ads

13/05/2004

Obrigado pela ajuda !!
Vou testar e informo se funcionou.

Abraço.


GOSTEI 0
Adilsond

Adilsond

13/05/2004

Para aqueles que não entenderam, espero ser mais claro:

O que fiz foi apenas criar uma view para possibilitar trabalhar com o BDE utilizando comando não aceitos diretos com tabelas Paradox,DBase.

Vamos dizer que necessito trazer a somatória de um valor por mes/ano entre um intervalo de ano.

O primeiro passo é criar uma query, com qualquer editor, que nos traga os dados necessários. Ex:

SELECT EXTRACT(MONTH FROM CAMPODATA) AS MES, // Estou trazendo apenas o mes da data
EXTRACT(YEAR FROM CAMPODATA) AS ANO, // Estou trazendo apenas o ano da data
VALOR // Estou trazendo o valor que será somado posteriormente
FROM MINHATABELA

O segundo passo é salvar esta query. Ela será salva no mesmo diretório onde se encontra a sua tabela. Esta query será apenas um arquivo texto com a extensão ´.sql´.

O terceiro passo é utilizar esta view. Então em seu projeto coloque uma query com o seguinte comando sql.

SELECT MES, ANO, SUM(VALOR)
FROM MINHAVIEW.SQL
WHERE ANO BETWEEN 2000 AND 2004
GROUP BY MES, ANO
ORDER BY ANO, MES

Espero que eu tenha sido mais claro. Qualquer dúvida, avivem-me.


GOSTEI 0
Adilsond

Adilsond

13/05/2004

Pessoal, desculpem-me pelo engano.

Apesar de funcionar salvando o arquivo com a extensão ´.sql´, a extensão correta é ´.qry´.


GOSTEI 0
Ads

Ads

13/05/2004

Funcionou perfeitamente !!!

Obrigado pela ajuda.

Abraço


GOSTEI 0
POSTAR