Mostrar o total da venda de mes a mes.

Firebird

08/04/2005

Olá

Tenho que fazer uma consulta meio complicada.
Usando 3 tabelas (NFiscal, itens da NFiscal e Produtos), tenho que somar o total vendido de cada produto, dentro de um período, mas separado por mes. Seria assim: NFiscal emitidas de ´01/01/05´ a ´31/03/05´.

PRODUTO......01/05........02/05..........03/05........[b:eda3f1e0e7]TOTAL GERAL[/b:eda3f1e0e7]
PREGO......2.105,00....1.095,00.....1.015,00.........[b:eda3f1e0e7]4.215,00[/b:eda3f1e0e7]
LIXA.........3.085,00....2.015,00......4.550,00.........[b:eda3f1e0e7]9.650,00[/b:eda3f1e0e7]
COLA........2.150,00....1.350,00.....3.500,00..........[b:eda3f1e0e7]7.000,00[/b:eda3f1e0e7]
Estou fazendo assim:
Select sum(ITENS.qtde) Qtdade, sum(ITENS.valor) Total, PROD.descricao, PROD.codigo from ITENS, PROD
inner join NFiscal A on A.NUMNF=ITENS.NUMNF and A.DATA between :Dataini and :Datafim
where ITENS.codigo=PROD.codigo
Group by PROD.descricao, PROD.codigo
Order by PROD.codigo

Do jeito que fiz acima, mostra o total do período ´01/01/05´ a ´31/03/05´. E preciso que mostre separado de mes a mes, como exemplifiquei acima. :?
Uso firebird 1.5 e IBX.
Alguém pode me dar alguma dica?


Ivonei

Ivonei

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

08/04/2005

Olá Ivonei,
você pode fazer assim:

[b:f25b7abe17]Select PROD.descricao, PROD.codigo,
(select sum(ITENS.qtde)
from ITENS inner join NFiscal A on A.NUMNF = ITENS.NUMNF
where EXTRACT( YEAR FROM A.DATA ) = 2005 AND EXTRACT( MONTH FROM A.DATA ) = 1 AND
ITENS.CODIGO = PROD.CODIGO ) qtdade_1_05,
(select sum(ITENS.qtde * ITENS.valor)
from ITENS inner join NFiscal A on A.NUMNF = ITENS.NUMNF
where EXTRACT( YEAR FROM A.DATA ) = 2005 AND EXTRACT( MONTH FROM A.DATA ) = 1 AND
ITENS.CODIGO = PROD.CODIGO ) total_1_05,

...

(select sum(ITENS.qtde)
from ITENS inner join NFiscal A on A.NUMNF = ITENS.NUMNF
where EXTRACT( YEAR FROM A.DATA ) = 2005 AND EXTRACT( MONTH FROM A.DATA ) = 12 AND
ITENS.CODIGO = PROD.CODIGO ) qtdade_12_05,
(select sum(ITENS.qtde * ITENS.valor)
from ITENS inner join NFiscal A on A.NUMNF = ITENS.NUMNF
where EXTRACT( YEAR FROM A.DATA ) = 2005 AND EXTRACT( MONTH FROM A.DATA ) = 12 AND
ITENS.CODIGO = PROD.CODIGO ) total_12_05

from PROD
Order by PROD.codigo[/b:f25b7abe17]

Este script serve para o mês de janeiro a dezembro, sendo que omiti os meses de fevereiro a novembro. O script deve ser gerado para cada período.
Até.


GOSTEI 0
Ivonei

Ivonei

08/04/2005

Muito Obrigado fsflorencio.
Exatamente como eu precisava. :)

PS. Gostei da formula. Bem bolada. 8)


GOSTEI 0
POSTAR