Total vendas mes a mes por estado

Delphi

24/01/2009

Olá a todos, gostaria de uma ajuda para montar uma instrucao sql aonde quero demonstrar o total das vendas mes a mes de cada estado. Algo do tipo:

UF - JAN - FEV - MAR - ABR - MAI - JUN ...
SP 0,00 0,00 0,00 0,00 0,00 0,00
RJ 0,00 0,00 0,00 0,00 0,00 0,00
PR 0,00 0,00 0,00 0,00 0,00 0,00
MA 0,00 0,00 0,00 0,00 0,00 0,00

Utilizo Delphi 7 + Firebird

Tabelas utilizadas: CLIENTE, UF, VENDAS



Desde já agradeço.


Eremita

Eremita

Curtidas 0

Respostas

Webjoel

Webjoel

24/01/2009

Olá!

Olha exatamente desta forma que você está querendo só é possível se não me engano no firebird 2.1.1 ou talvez até somente no 2.5.

mas isso você pode montar na sua própria aplicação, o select para tornar as informações terá que ser dessa forma:

select

extract(month from v.data_venda) as mes,
u.uf,
sum(v.vl_venda) as total_venda

from venda v

inner join cliente c on (c.cod_cliente = v.cod_cliente)
inner join uf u on (u.uf = c.uf)

group by 1,2



GOSTEI 0
Walter Faria

Walter Faria

24/01/2009

Bom dia, aproveitando este TOPICO, montei minha SQL da seguinte FORMA:

select extract(month from p.data) as mes, sum(i.Total) as total_venda
from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009
Group By p.data

MES TOTAL_VENDA
1 340,00
1 200,00

Todas as Vendas estao na DATA de janeiro, pq nao agrupou numa so linha
MES TOTAL_VENDA
1 540,00

Estou usando INTERBASE e D7 , Obrigado


GOSTEI 0
Joaoshi

Joaoshi

24/01/2009

Colega, o problema esta no [b:c7d08f23c3]Group By p.data[/b:c7d08f23c3] tente [b:c7d08f23c3]GROUP BY 1[/b:c7d08f23c3] (no Firebird é possível).

Espero ter ajudado.


GOSTEI 0
Webjoel

Webjoel

24/01/2009

Olá!

Completando o que o amigo acima citou, segue abaixo a solução para seu caso, mas fica o select mais lento:

select extract(month from p.data) as mes, sum(i.Total) as total_venda
from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009
Group By extract(month from p.data)

ou

select extract(month from p.data) as mes, sum(i.Total) as total_venda
from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009
Group By 1



GOSTEI 0
Walter Faria

Walter Faria

24/01/2009

entao, nenhuma das duas opcoes funciona, fala que a coluna nao existe, como posso resolver isto.


GOSTEI 0
Webjoel

Webjoel

24/01/2009

Olá!

Tente isso:

select

mes,
sum(total)

from (

select

extract(month from p.data) as mes,
i.Total as total

from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009)

group by mes



GOSTEI 0
Pestana_

Pestana_

24/01/2009

Olá! Completando o que o amigo acima citou, segue abaixo a solução para seu caso, mas fica o select mais lento:
select extract(month from p.data) as mes, sum(i.Total) as total_venda
from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009
Group By extract(month from p.data)

ou

select extract(month from p.data) as mes, sum(i.Total) as total_venda
from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009
Group By 1


eremita, esta solução que o webjoel sugeriu não funcionou? poste a mensagem de erro.


GOSTEI 0
Eremita

Eremita

24/01/2009

Caros colegas, por necessitar de uma solução digamos rápida, tive que recorrer a outros recursos para ter a referida análise. Porém não descartei a oportunidade em ter a solução via select uma vez que atraves desta podemos ter base para muitas outras similares. Ainda não testei o código, mas acho que o mesmo ainda nao atende minha necessidade.


GOSTEI 0
Walter Faria

Walter Faria

24/01/2009

tento executar este SQL, mas da erro :
coluna Select nao existe. oq pode ser estou usando INTERBASE


Obrigado


****************

select mes, sum(total) from (select extract(month from p.data) as mes, i.Total as total from Pedido p
inner join pedidoitem i on (i.codpedido = p.codpedido)
Where extract(Year from p.Data) = 2009)
group by mes


GOSTEI 0
Walter Faria

Walter Faria

24/01/2009

eai , alguem pode me ajudar , ainda nao consegui resolver, como posso montar uma VIEWS para resolver esta questao ?


Obrigado


GOSTEI 0
POSTAR