Distinct com SUM

SQL Server

12/12/2022


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

Joao Escudeiro

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

12/12/2022

É só remover o distinct. O group by se encarrega de trazer apenas uma linha por CodProduto
GOSTEI 0
POSTAR