Mostrar o total da venda de mes a mes.
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?
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
Curtidas 0
Respostas
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é.
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
08/04/2005
Muito Obrigado fsflorencio.
Exatamente como eu precisava. :)
PS. Gostei da formula. Bem bolada. 8)
Exatamente como eu precisava. :)
PS. Gostei da formula. Bem bolada. 8)
GOSTEI 0