Distinct com SUM
12/12/2022
0
Boa tarde, tudo bem?
Tenho o script abaixo, preciso somar as entradas e saidas da movimentação de produtos, dentro de um período e que me mostre o fornecedor quando existir.
Até a somatória tudo certo, mas quando coloco o código do fornecedor, gera duas linhas de resultados para o mesmo produto. Deixei os comandos que fazem gerar duas linhas em comentário (--).
Obrigado
SELECT
dbo.fncFormataString(p.CodigoInterno,10,''''''''''''''''0'''''''''''''''') + '''''''''''''''' - '''''''''''''''' + p.Descricao as Produto,
IsNull(Totais.Entradas,0) as QuantidadeCompras,
IsNull(Totais.Saidas,0) as QuantidadeVendas,
p.Custo_Atual as ValorCusto,
p.Vlr_Venda as ValorVenda
--,COALESCE(f.Nome,f.RazaoSocial) as Fornecedor
FROM
(
SELECT
Distinct(CodProduto),
--Cod_Fornecedor,
SUM(CASE WHEN Condicao = ''''''''''''''''EC'''''''''''''''' or Condicao = ''''''''''''''''ES'''''''''''''''' THEN ISNULL(Qdade,0) ELSE 0 END) as Entradas,
SUM(CASE WHEN Condicao = ''''''''''''''''SV'''''''''''''''' or Condicao = ''''''''''''''''SS'''''''''''''''' or Condicao = ''''''''''''''''SN'''''''''''''''' THEN ISNULL(Qdade,0) ELSE 0 END) as Saidas
FROM
Movimento_Itens
WHERE
(Data Between ''''''''''''''''01-01-2022'''''''''''''''' and ''''''''''''''''31-12-2022'''''''''''''''')
--and
--Cod_Fornecedor =26
GROUP BY
CodProduto
-- ,Cod_Fornecedor
) Totais
inner join produtos p
on Totais.CodProduto = p.CodigoInterno
-- left join Fornecedores f
-- on Totais.Cod_Fornecedor = f.Codigo
order by
p.CodigoInterno,
p.Descricao
--COALESCE(f.Nome,f.RazaoSocial)
Joao Escudeiro
Curtir tópico
+ 0
Responder
Posts
27/12/2022
Arthur Heinrich
É só remover o distinct. O group by se encarrega de trazer apenas uma linha por CodProduto
Responder
Clique aqui para fazer login e interagir na Comunidade :)