URGENTE Ajuda com trabalho POR FAVOR!!!

06/08/2020

0

Boa noite a todos!
Estou com um problema no script de consulta para o obter um relatório. Segue o mesmo abaixo.
select s.NomeSupervisor, i.NomeInstr, p.NomeProd, p.CPF ,sum (nfc.TotKg) ,sum (pi.QtdeMilPes) as MilPes, sum (pi.QtdeHectares) as Ha, sum (pi.QtdeProdContr) as ProduçãoContr, pi.DtPedido

from
FPedInsumo pi
inner join FProdutor p on (p.CodProd = pi.CodProd)
inner join FProdInstr pin on( pin.CodProd = pi.CodProd and pi.CodSafra = pin.CodSafra)
inner join FInstrutor i on (i.CodInstr = pin.CodInstr)
inner join FSupInstrSafra sis on (sis.CodInstr = pin.CodInstr and sis.CodSafra =18)
inner join FSupervisor s on (s.CodSupervisor = sis.CodSupervisor and sis.Status='A')
--inner join FFardosCompra fc on (fc.CodProd = pi.CodProd and fc.Status='A')
inner join FNotaFiscalCom nfc on (nfc.CodProdNF = pi.CodProd and nfc.CodSafra=18 and nfc.CodVar=30)

where pi.Status='F' and pi.CodVar=30 and pi.CodSafra=18 and pi.TipoPedInsumo in (1,2,3)-- and pi.CodProd=45759
group by NomeSupervisor, NomeInstr, NomeProd, p.CPF, DtPedido
order by NomeSupervisor, NomeInstr

Quando tento efetuar as somas do campo TotKg, o mesmo esta duplicando as somas dos campos que envolvem QTD's. Pois na tabela FNotaFiscalCom , o produtor por ter mais de uma NF. OS Kilos ele soma corretamente mas as Qtds devem somar somente referente ao numeros dos tipos dos pedidos e nao ao correspondente de números de NFS E também preciso trazer somente a data do pedido de tipo 1.

Agradeço se alguem puder me ajudar
Renan

Renan

Responder

Post mais votado

07/08/2020

tente assim:
select
	tmp.NomeSupervisor,
	tmp.NomeInstr,
	tmp.NomeProd,
	tmp.CPF,
	tmp.MilPes,
	tmp.Ha,
	tmp.ProducaoContr,
	tmp.DtPedido,
	sum(nfc.TotKg) TotKg,
from
	(
	select
		s.NomeSupervisor,
		i.NomeInstr,
		p.CodProd,
		p.NomeProd,
		p.CPF,
		sum(pi.QtdeMilPes) as MilPes,
		sum(pi.QtdeHectares) as Ha,
		sum(pi.QtdeProdContr) as ProducaoContr,
		max(case when pi.TipoPedInsumo = 1 then pi.DtPedido else null end) DtPedido
	from
		FPedInsumo pi
	inner join
		FProdutor p on (p.CodProd = pi.CodProd)
	inner join
		FProdInstr pin on( pin.CodProd = pi.CodProd and pi.CodSafra = pin.CodSafra)
	inner join
		FInstrutor i on (i.CodInstr = pin.CodInstr)
	inner join
		FSupInstrSafra sis on (sis.CodInstr = pin.CodInstr and sis.CodSafra =18)
	inner join
		FSupervisor s on (s.CodSupervisor = sis.CodSupervisor and sis.Status='A')
--	inner join
--		FFardosCompra fc on (fc.CodProd = pi.CodProd and fc.Status='A')
	where
		pi.Status='F'
		and pi.CodVar=30
		and pi.CodSafra=18
		and pi.TipoPedInsumo in (1,2,3)
--		and pi.CodProd=45759
	group by
		s.NomeSupervisor,
		i.NomeInstr,
		p.CodProd,
		p.NomeProd,
		p.CPF
	) tmp
inner join
	FNotaFiscalCom nfc on (nfc.CodProdNF = tmp.CodProd and nfc.CodSafra=18 and nfc.CodVar=30)
group by
	tmp.NomeSupervisor,
	tmp.NomeInstr,
	tmp.NomeProd,
	tmp.CPF,
	tmp.MilPes,
	tmp.Ha,
	tmp.ProducaoContr
	tmp.DtPedido
order by
	tmp.NomeSupervisor,
	tmp.NomeInstr

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

07/08/2020

Emerson Nascimento

tem uma vírgula a mais ali em
sum(nfc.TotKg) TotKg,
Responder

07/08/2020

Emerson Nascimento

e uma faltando aqui
tmp.ProducaoContr
Responder

07/08/2020

Renan

Funcionou Emerson, muito obrigado pela ajuda!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar