Select Pedido e Itens

Firebird

14/12/2022

Preciso de uma ajuda. Aparentemente o problema é bem simples e sempre acabo resolvendo de outra forma.
Tabela de Pedidos e Itens. O campo que preciso retornar esta na tabela de itens( sum(quantidade) ) que é o problema.
No momento em que se faz o JOIN com Itens como ele passa varias vezes pelos itens os valores ficam errados.
select
a.emissao,
sum(a.TOTAL) VALOR,
count(*) as VENDAS,
avg(a.TOTAL) MEDIA_CLIENTES,
sum(p.quantidade) as itens
from PEDIDOS a
join ITENS p on p.vda001 = a.vda001 and p.emp001 = a.emp001
where (a.emissao >= ''01.10.2022'' and a.emissao <= ''01.10.2022'')
group by 1

Firebird 2.5
Fernando Malta

Fernando Malta

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

14/12/2022

faça a soma dos valores dos itens.
select
	a.emissao,
	sum(p.vlrunitario * p.quantidade) VALOR,
	count(*) as VENDAS,
	sum(p.vlrunitario * p.quantidade) / count(distinct a.codcliente) MEDIA_CLIENTES,
	sum(p.quantidade) as itens
from
	PEDIDOS a
join ITENS p
	on p.vda001 = a.vda001
	and p.emp001 = a.emp001
where
	a.emissao between '01.10.2022' and '01.10.2022'
group by
	a.emissao

GOSTEI 0
Fernando Malta

Fernando Malta

14/12/2022

faça a soma dos valores dos itens.
select
	a.emissao,
	sum(p.vlrunitario * p.quantidade) VALOR,
	count(*) as VENDAS,
	sum(p.vlrunitario * p.quantidade) / count(distinct a.codcliente) MEDIA_CLIENTES,
	sum(p.quantidade) as itens
from
	PEDIDOS a
join ITENS p
	on p.vda001 = a.vda001
	and p.emp001 = a.emp001
where
	a.emissao between '01.10.2022' and '01.10.2022'
group by
	a.emissao





Fiz uma pequena alteração, mas seria isso msm.
select
a.emissao,
sum(p.liquido) VALOR,
count(distinct a.vda001) as VENDAS,
sum(p.liquido) / count(distinct a.vda001) MEDIA_CLIENTES,
sum(p.quantidade) as qtd_vendida,
sum(p.quantidade) / count(distinct a.vda001) as media_itens,
count(*) itens
from
vda_vda001 a
join vda_vda002 p
on p.vda001 = a.vda001
and p.emp001 = a.emp001
where
a.emissao between '01.10.2022' and '01.10.2022'
and a.situacao = 'C'
group by
a.emissao

Grato pela atenção. Resolvido
GOSTEI 0
POSTAR